2014-05-06 20 views
12

我想分割一個字符串女巫有一個變量空白字符,但得到了很多我想消除的空行。 這個代碼在Poweshell中分隔帶有可變空白字符的字符串

$text = "Video Video Audio Audio VBI VBI" 
$text.Split() 

輸出這個

Video 

Video 

Audio 

Audio 

VBI 



VBI 

PS H:\> 

,我想這

Video 
Video 
Audio 
Audio 
VBI 
VBI 

回答

20

您可以使用PowerShell的-split運營商,它使用正則表達式。

"Video Video Audio Audio VBI VBI" -split '\s+' 

正如@StijnDeVos所指出的那樣,這不會刪除前導/後綴空白。

這裏,\s表示空格字符,並且+匹配其中的一個或多個。所有更多的理由去@ user3554001的答案。

另一種選擇是過濾空字符串。

"Video Video Audio Audio VBI VBI".split()| where {$_} 
+1

'-split'\ s +''不會刪除前導空格和尾部空格,所以您仍然需要過濾掉空字符串。 –

9

您可以使用此代碼段,消除空行:

$text.split(" ",[System.StringSplitOptions]::RemoveEmptyEntries) 
+0

如果字符串之間存在選項卡,則這不起作用。 – randomuser15995183

2

的-split運營商需要一個正則表達式的說法,所以只匹配多個空格字符(\ S +):

$Text = $text = "Video Video Audio Audio VBI VBI" 
$text -split '\s+' -match '\S' 

Video 
Video 
Audio 
Audio 
VBI 
VBI 

最後一個後面的任何尾隨空格可能會使您留空,因此-match將消除只有空白的任何內容。

4

嘗試此,它取代一個空間的一個以上的實例與進行分割命令之前的單個實例:

$($text -replace '\s+', ' ').split() 
6

-split "Video Video Audio Audio VBI VBI"

+2

+1我更喜歡這個答案。我忘了'-split'可以用作一元運算符。 – Rynant

1

其他溶液:

$text -split ' ' | where {$_.Trim() -ne ''} 

或:

$text.Split(' ').Where({$_.Trim() -ne ''}) 
相關問題