.net 如何将字符串拆分为不带多个空格的字符串数组

.net 如何将字符串拆分为不带多个空格的字符串数组,.net,powershell,split,powershell-2.0,.net,Powershell,Split,Powershell 2.0,我有一个文本框中的字符串$x: 我想将此字符串拆分为不带“*”的字符串数组 我运行:$a=$x.Split(“*”)但是我在“7-zip”中收到了两个空格: 建议1: 他们建议用户使用-split,但是使用它时,我收到了一个字符串(字符数组),而不是字符串数组: 建议2: 在博客中,他们建议使用[System.StringSplitOptions]::removemptyentrie+foreach(在博客中)来解析不需要的空格。 我试过: $option = [System.String

我有一个文本框中的字符串
$x

我想将此字符串拆分为不带“*”的字符串数组

我运行:
$a=$x.Split(“*”)
但是我在“7-zip”中收到了两个空格:

建议1:
他们建议用户使用
-split
,但是使用它时,我收到了一个字符串(字符数组),而不是字符串数组:

建议2:
在博客中,他们建议使用
[System.StringSplitOptions]::removemptyentrie
+
foreach
(在博客中)来解析不需要的空格。
我试过:

$option = [System.StringSplitOptions]::RemoveEmptyEntries
 $b = $x.Split("*", $option) |foreach {
    $_.Split(" ", $option)
}
但是它没有帮助:


如何将字符串拆分为以“*”分隔的字符串数组?

如您所知,您可以使用
[StringSplitOptions]::removeMptyEntries
删除上次出现的
*
后的“空白”项

现在,要删除单词周围不需要的空格,只需调用
Trim()


您还可以使用
-split
(您只需要一个
\
来转义
*
),然后使用
Where Object
过滤掉空条目:

"a*b* *c" -split "\*" | Where-Object { $_ -notmatch "^\s+$" }| ForEach-Object { $_.Trim() }
或者反过来(删除空白后使用
Where Object
):


您还可以使用
-replace
删除前导和尾随空格(基本上是
Trim()
的正则表达式版本):


使用正则表达式
\*`n?
,您不需要额外的
Trim()
调用。
"a*b* *c" -split "\*" | Where-Object { $_ -notmatch "^\s+$" }| ForEach-Object { $_.Trim() }
"a*b* *c" -split "\*" | ForEach-Object { $_.Trim() } | Where-Object { $_ }
" a b " -replace "^\s+|\s+$",""
# results in "a b"