【问题标题】:Powershell convert string to arrayPowershell 将字符串转换为数组
【发布时间】:2017-11-07 20:00:39
【问题描述】:

我该如何改变:

$Text = "Apple Pear Peach Banana"

到

$Text = @("Apple", "Pear", "Peach", "Banana")

我打算将数组提供给foreach 循环。提示用户输入水果,中间有空格(我将使用Read-Host)。因此,我需要将空格分隔的字符串转换为 foreach 循环的数组。

谢谢...

【问题讨论】:

  • 您可以使用split 喜欢:$Text -split ' '

标签: arrays string powershell foreach


【解决方案1】:

我会使用-split regex operator,像这样:

$text = -split $text

也可以直接在foreach()循环声明中使用:

foreach($fruit in -split $text)
{
    "$fruit is a fruit"
}

在一元模式下(如上),-split defaults to 在分隔符\s+ 上分割(1 个或多个空白字符)。

如果用户不小心输入了连续的空格,这很好:

PS C:\> $text = Read-Host 'Input fruit names'
Input fruit names: Apple Pear   Peaches  Banana
PS C:\> $text = -split $text
PS C:\> $text
Apple
Pear
Peaches
Banana

【讨论】:

  • 哦,这很好..谢谢!
【解决方案2】:

使用拆分()

$text = $text.Split(" ")

【讨论】:

    【解决方案3】:

    $Text.Split(' ')

    需要更多字符才能回答。

    【讨论】:

    • 说些关于$Text.Split(' ') 的有用或有教育意义的东西,而不是“需要更多字符才能回答” - 需要更多字符是有原因的。
    • 感谢您的快速回复...但是如何将拆分后的单词添加到带有双引号等的数组中...有没有办法通过读取主机来做到这一点...即什么用户输入进入一个数组?而不是单词和空格?
    • 好的,我现在明白了……我可以在 foreach 循环中使用 $Text.Split……即 foreach ($F in Text.Split(' '))
    【解决方案4】:
    $text = $text -split " "
    

    只要你的水果名称不是你想保持在一起的两个词,就可以了。

    【讨论】:

    • 本练习只使用一个单词 fruits。
    猜你喜欢
    • 2014-10-08
    • 2020-04-15
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    • 1970-01-01
    • 2018-09-03
    相关资源
    最近更新 更多