.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"