mcu*_*mcu 5 .net string powershell text
似乎PowerShell -split运算符和.NET Split()方法完全不同.
.NET将分隔符字符串视为字符数组.
$str = "123456789"
Write-Host ".NET Split(): "
$lines = $str.Split("46")
Write-Host "Count: $($lines.Length)"
$lines
$str = "123456789"
Write-Host "-split operator: "
$lines = $str -split "46"
Write-Host "Count: $($lines.Length)"
$lines
Run Code Online (Sandbox Code Playgroud)
输出:
.NET Split():
Count: 3
123
5
789
-split operator:
Count: 1
123456789
Run Code Online (Sandbox Code Playgroud)
有没有办法让.NET应用程序使用与PowerShell相同的技术,并使用字符串分隔符作为一个实体单位?希望没有RegEx.
谢谢.
编辑:这在PowerShell中工作,使用Split():
Write-Host "Divided by 46:"
"123456789".Split([string[]] "46", [StringSplitOptions]::None)
Write-Host "`n`nDivided by 45:"
"123456789".Split([string[]] "45", [StringSplitOptions]::None)
Divided by 46:
123456789
Divided by 45:
123
6789
Run Code Online (Sandbox Code Playgroud)
http://msdn.microsoft.com/en-us/library/system.string.split.aspx
当你正在调用时string.Split(string)
,它会使用string.Split(char[])
重载(string
可以转换为a char[]
,但不能转换为string[]
).
要使用string.Split(string[], StringSplitOptions)
重载,必须以某种方式调用它"123456789".Split(new[] { "45" }, StringSplitOptions.None)
.
.NET的String.Split方法有两组(组)重载.第一个接收字符数组,第二个接收字符串数组.实际上没有接收字符串的重载.第一个行为就像你描述的那样,每个角色都是单独分割的.第二个沿着整个字符串分割,就像你想要的那样.
由于Powershell解析参数的方式,传递给Split的字符串将被解析为char数组,并调用第一个重载.如果您可以明确指定"46"是一个只包含一个字符串的数组,它应该为您提供所需的行为.