2014-03-05 60 views
1

我有代碼,它將字符串拆分爲數組。所以你能幫助我,爲什麼這是行不通的?不能在PowerShell上拆分

$var="test.1->test.2" 
$arr=$var.Split("->") 
$arr[0]#show correct: "test.1" 
$arr[1]#doesn't show... 

回答

2

它的工作原理。但它確實將字符串拆分爲「 - 」或「>」,因此$arr[1]在「 - 」和「>」之間具有空字符串,「test.2」位於$arr[2]中。

所以,你可以:

$var="test.1->test.2" 
$arr=$var.Split("->") 
write-host $arr[0] 
write-host $arr[2] 

或:

$var="test.1->test.2" 
$arr=$var.Split("->") | select -First 1 -Last 1 
write-host $arr[0] 
write-host $arr[1] 

或類似的東西:

$var="test.1->test.2" 
$arr= $($var -replace "->","#").Split("#") 
write-host $arr[0] 
write-host $arr[1] 
2

字符串Split()方法將字符數組和分割字符串數組中的任何字符。 Powershell還有一個帶有分隔符的-split運算符。我想你可能想在這裏使用-split運算符。

以下是區別。 「 - 」和「>」,第二對分割「 - >」在所述第一分割:

PS C:\> $var.Split("->") 
test.1 

test.2 
PS C:\> $var -split "->" 
test.1 
test.2 

注意split採用正則表達式模式,而不是一個簡單的字符串。雖然對於這種特殊模式,這很好,但其他標點符號可能會出現問題,要求您在模式中使用特殊字符或使用SimpleMatch選項:

PS C:\> "a[b" -split "[",0,"SimpleMatch" 
a 
b