在Powershell中拆分带有可变空白字符的字符串

Ion*_*nut 25 powershell

我想拆分一个字符串女巫有一个可变的空白字符,但是我想消除很多空行.这段代码

$text = "Video  Video  Audio  Audio  VBI    VBI"
$text.Split()
Run Code Online (Sandbox Code Playgroud)

输出这个

Video

Video

Audio

Audio

VBI



VBI

PS H:\>
Run Code Online (Sandbox Code Playgroud)

而且我想要这个

Video
Video
Audio  
Audio
VBI
VBI
Run Code Online (Sandbox Code Playgroud)

很晚编辑:
注意到这个问题仍然有很多观点,所以我想澄清一下,当我问这个问题时,我对功能编程或正则表达式一无所知.
这里提到的所有解决方案都适用,因为有多种方法可以删除空格并从字符串创建数组.

Ryn*_*ant 29

您可以使用PowerShell的-split运算符,该运算符使用正则表达式.

"Video  Video  Audio  Audio  VBI    VBI" -split '\s+'
Run Code Online (Sandbox Code Playgroud)

如@StijnDeVos所述,这不会删除前导/尾随空格.

这里,\s表示空白字符,并+匹配其中的一个或多个.更有理由选择@ user3554001的答案.

另一种选择是过滤空字符串.

 "Video  Video  Audio  Audio  VBI    VBI".split()| where {$_}
Run Code Online (Sandbox Code Playgroud)

  • `-split '\s+'` 不会删除前导和尾随空格,因此您仍然需要过滤掉空字符串。 (2认同)

Loï*_*HEL 14

您可以使用此代码段来消除空行:

$text.split(" ",[System.StringSplitOptions]::RemoveEmptyEntries)
Run Code Online (Sandbox Code Playgroud)


小智 14

-split "Video Video Audio Audio VBI VBI"

  • +1我更喜欢这个我自己的答案.我忘了`-split`可以用作一元运算符. (3认同)

Dav*_*tin 5

试试这个,它在执行 split 命令之前用一个实例替换一个以上的空间实例:

$($text -replace '\s+', ' ').split()
Run Code Online (Sandbox Code Playgroud)