我想拆分一个字符串女巫有一个可变的空格字符,但是我想消除很多空行。 这段代码
$text = "Video Video Audio Audio VBI VBI"
$text.Split()
输出此
Video
Video
Audio
Audio
VBI
VBI
PS H:\>
我想要这个
Video
Video
Audio
Audio
VBI
VBI
很晚编辑:
注意到这个问题仍然有很多观点,所以我想澄清一下,当我提出这个问题时,我对功能编程或正则表达式一无所知。
这里提到的所有解决方案都适用,因为有多种方法可以删除空格并从字符串中创建数组。
答案 0 :(得分:28)
您可以使用PowerShell的-split
运算符,该运算符使用正则表达式。
"Video Video Audio Audio VBI VBI" -split '\s+'
如@StijnDeVos所述,这不会删除前导/尾随空格。
此处,\s
表示空格字符,+
与其中一个或多个匹配。更有理由选择@ user3554001的答案。
另一种选择是过滤空字符串。
"Video Video Audio Audio VBI VBI".split()| where {$_}
答案 1 :(得分:14)
您可以使用此代码段消除空行:
$text.split(" ",[System.StringSplitOptions]::RemoveEmptyEntries)
答案 2 :(得分:13)
-split "Video Video Audio Audio VBI VBI"
答案 3 :(得分:4)
试一试,它在执行split命令之前用一个实例替换一个空格的多个实例:
$($text -replace '\s+', ' ').split()
答案 4 :(得分:2)
-split运算符采用正则表达式参数,因此只需匹配多个空白字符(\ s +):
$Text = $text = "Video Video Audio Audio VBI VBI"
$text -split '\s+' -match '\S'
Video
Video
Audio
Audio
VBI
VBI
在最后一个之后的任何尾随空格可能会留下一个空条目,因此-match将消除只有空格的任何内容。
答案 5 :(得分:1)
其他解决方案:
$text -split ' ' | where {$_.Trim() -ne ''}
或:
$text.Split(' ').Where({$_.Trim() -ne ''})