21 powershell
我正在尝试用分隔符吐出字符串,这是一个字符串:
$string = "5637144576, messag<>est<<>>5637145326, 1<<>>5637145328, 0"
$separator = "<<>>"
$string.Split($separator)
Run Code Online (Sandbox Code Playgroud)
由于分裂,我得到:
5637144576, messag
est
5637145326, 1
5637145328, 0
Run Code Online (Sandbox Code Playgroud)
代替
5637144576, messag<>est
5637145326, 1
5637145328, 0
Run Code Online (Sandbox Code Playgroud)
当我尝试使用接受string []的重载split时:
$string = "5637144576, messag<>est<<>>5637145326, 1<<>>5637145328, 0"
$separator = @("<<>>")
$string.Split($separator)
Run Code Online (Sandbox Code Playgroud)
但我得到下一个错误:
Cannot convert argument "0", with value: "System.Object[]", for "Split" to type "System.Char[]": "Cannot convert value "<<>>" to type "System.Char". Error: "String must be exactly one character long.""
Run Code Online (Sandbox Code Playgroud)
有人知道如何按字符串拆分字符串吗?
Fro*_* F. 28
该-split
操作使用字符串分割的,而不是像chararray, Split()
:
$string = "5637144576, messag<>est<<>>5637145326, 1<<>>5637145328, 0"
$separator = "<<>>"
$string -split $separator
5637144576, messag<>est
5637145326, 1
5637145328, 0
Run Code Online (Sandbox Code Playgroud)
如果要将该Split()
方法与字符串一起使用,则需要使用$seperator
带有一个元素的stringarray,并指定stringsplitoptions值.您可以通过检查其定义来查看:
$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
Run Code Online (Sandbox Code Playgroud)
编辑:正如@RomanKuzmin指出的那样,-split
默认情况下使用正则表达式模式进行拆分.所以要注意逃避特殊字符(例如.
,在正则表达式中是"任何字符").您还可以强制simplematch
禁用正则表达式匹配,如:
$separator = "<<>>"
$string -split $separator, 0, "simplematch"
Run Code Online (Sandbox Code Playgroud)
了解更多关于-split
这里.
归档时间: |
|
查看次数: |
80926 次 |
最近记录: |