如何将字符串拆分为没有多个空格的字符串数组
How to split string to an array of strings without multiple spaces
我有来自文本框的字符串 $x
:
我想将此字符串拆分为一个不带“*”的字符串数组。
I 运行: $a = $x.Split("*")
但我在“7-zip”中收到了两个空格:
建议1:
Here 他们建议用户 -split
但是 在使用它时我收到了一个字符串(chars 的数组),而不是字符串数组:
建议2:
在 this blog and on this 问题中,他们建议使用 [System.StringSplitOptions]::RemoveEmptyEntrie
+ foreach
(在博客中)来解析不需要的空格。
我试过了:
$option = [System.StringSplitOptions]::RemoveEmptyEntries
$b = $x.Split("*", $option) |foreach {
$_.Split(" ", $option)
}
但是它没有帮助:
如何将字符串拆分为以“*”分隔的字符串数组?
如您所见,您可以使用 [StringSplitOptions]::RemoveEmptyEntries
.
删除最后一次出现 *
之后的 "blank" 条目
现在,您只需调用 Trim()
:
即可删除不需要的 space 单词
$x = @"
ccleaner*
7-zip*
"@
$Words = $x.Split('*',[StringSplitOptions]::RemoveEmptyEntries) | ForEach-Object {
$_.Trim()
}
PS C:\> $Words[0]
ccleaner
PS C:\> $Words[0]
7-zip
PS C:\>
你也可以使用-split
(你只需要一个\
来转义*
)然后用Where-Object
过滤掉空条目:
"a*b* *c" -split "\*" | Where-Object { $_ -notmatch "^\s+$" }| ForEach-Object { $_.Trim() }
或反过来(在删除白色space后使用Where-Object
):
"a*b* *c" -split "\*" | ForEach-Object { $_.Trim() } | Where-Object { $_ }
您还可以使用 -replace
删除前导和尾随白色space(基本上,Trim()
的正则表达式版本):
" a b " -replace "^\s+|\s+$",""
# results in "a b"
我有来自文本框的字符串 $x
:
我想将此字符串拆分为一个不带“*”的字符串数组。
I 运行: $a = $x.Split("*")
但我在“7-zip”中收到了两个空格:
建议1:
Here 他们建议用户 -split
但是 在使用它时我收到了一个字符串(chars 的数组),而不是字符串数组:
建议2:
在 this blog and on this 问题中,他们建议使用 [System.StringSplitOptions]::RemoveEmptyEntrie
+ foreach
(在博客中)来解析不需要的空格。
我试过了:
$option = [System.StringSplitOptions]::RemoveEmptyEntries
$b = $x.Split("*", $option) |foreach {
$_.Split(" ", $option)
}
但是它没有帮助:
如何将字符串拆分为以“*”分隔的字符串数组?
如您所见,您可以使用 [StringSplitOptions]::RemoveEmptyEntries
.
*
之后的 "blank" 条目
现在,您只需调用 Trim()
:
$x = @"
ccleaner*
7-zip*
"@
$Words = $x.Split('*',[StringSplitOptions]::RemoveEmptyEntries) | ForEach-Object {
$_.Trim()
}
PS C:\> $Words[0]
ccleaner
PS C:\> $Words[0]
7-zip
PS C:\>
你也可以使用-split
(你只需要一个\
来转义*
)然后用Where-Object
过滤掉空条目:
"a*b* *c" -split "\*" | Where-Object { $_ -notmatch "^\s+$" }| ForEach-Object { $_.Trim() }
或反过来(在删除白色space后使用Where-Object
):
"a*b* *c" -split "\*" | ForEach-Object { $_.Trim() } | Where-Object { $_ }
您还可以使用 -replace
删除前导和尾随白色space(基本上,Trim()
的正则表达式版本):
" a b " -replace "^\s+|\s+$",""
# results in "a b"