PowerShell如何将字符串转换为数组

5

我该如何更改:

$Text = "Apple Pear Peach Banana"

to

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

我计划将数组用于 foreach 循环。用户被提示输入水果名称,以空格分隔(我将使用 Read-Host)。因此,我需要将以空格分隔的字符串转换为数组,以供 foreach 循环使用。

谢谢...


2
你可以使用 split 函数,例如:$Text -split ' ' - Hackerman
4个回答

8
我会使用 -split 正则表达式运算符,如下所示:
$text = -split $text

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

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

在一元模式下(如上所述),-split默认使用\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

哦,这很好。谢谢! - nixgeek

1
使用Split()函数。
$text = $text.Split(" ")

0

$Text.Split(' ')

需要更多的字符来回答。


关于 $Text.Split(' '),请说些有用或教育意义的内容,而不是“需要更多字符才能回答” - 需要更多字符是有原因的。 - Mathias R. Jessen
感谢您的快速回复……但是我该如何将拆分后的单词添加到一个带有双引号等的数组中呢?有没有一种通过read-host来做到这一点的方法……例如,用户输入的内容进入一个数组,而不是单词和空格? - nixgeek
好的,我现在明白了...我可以在foreach循环中使用$Text.Split....即:foreach ($F in Text.Split(' ')) - nixgeek

0
$text = $text -split " "

只要您的水果名称中没有想要保持在一起的两个单词,这段代码就可以正常工作。


1
这个练习中只使用一个单词“水果”。 - nixgeek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接