我有代码,它将字符串拆分为数组。所以你可以帮助我,为什么这不起作用?
$var="test.1->test.2"
$arr=$var.Split("->")
$arr[0]#show correct: "test.1"
$arr[1]#doesn't show...
答案 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