对PowerShell不起作用

时间:2014-03-05 13:16:43

标签: powershell

我有代码,它将字符串拆分为数组。所以你可以帮助我,为什么这不起作用?

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

2 个答案:

答案 0 :(得分:2)

有效。但它确实将字符串拆分为“ - ”或“>”,因此$arr[1]在“ - ”和“>”之间有空字符串,而“test.2”在$arr[2]中。 / p>

所以你可以:

$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]

答案 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