The -split
运算符使用字符串来分割,而不是像这样的字符数组Split()
:
$string = "5637144576, messag<>est<<>>5637145326, 1<<>>5637145328, 0"
$separator = "<<>>"
$string -split $separator
5637144576, messag<>est
5637145326, 1
5637145328, 0
如果您想使用Split()
带有字符串的方法,您需要$seperator
成为一个只有一个元素的字符串数组,并指定一个 stringssplitoptions 值。您可以通过检查其定义来看到这一点:
$string.Split
OverloadDefinitions
-------------------
string[] Split(Params char[] separator)
string[] Split(char[] separator, int count)
string[] Split(char[] separator, System.StringSplitOptions options)
string[] Split(char[] separator, int count, System.StringSplitOptions options)
#This one
string[] Split(string[] separator, System.StringSplitOptions options)
string[] Split(string[] separator, int count, System.StringSplitOptions options)
$string = "5637144576, messag<>est<<>>5637145326, 1<<>>5637145328, 0"
$separator = [string[]]@("<<>>")
$string.Split($separator, [System.StringSplitOptions]::RemoveEmptyEntries)
5637144576, messag<>est
5637145326, 1
5637145328, 0
编辑:正如@RomanKuzmin 指出的,-split
默认情况下使用正则表达式模式进行分割。因此请注意转义特殊字符(例如.
在正则表达式中是“任何字符”)。你也可以强制simplematch
禁用正则表达式匹配,例如:
$separator = "<<>>"
$string -split $separator, 0, "simplematch"
阅读更多关于-split
here http://technet.microsoft.com/en-us/library/hh847811.aspx.