-join 和 -split 用法
具体可参考 PowerShell_ISE的帮助文件:
-Join(一元联接运算符):
一元联接运算符 (-join <string[]>) 的优先级高于逗号。因此,如果向一元联接运算符提交逗号分隔的字符串列表,则只有第一个字符串(第一个逗号之前的部分)才会提交给联接运算符。
若要使用一元联接运算符,请将字符串用圆括号括起,或将字符串存储在变量中,然后提交该变量以进行联接。
例如:
-join "a", "b", "c"
返回结果:
a
b
c
-join ("a", "b", "c")
返回结果:
abc
$z = "a", "b", "c"
-join $z
返回结果:
abc
"Windows", "PowerShell", "2.0" -join " " #返回结果:Windows PowerShell 2.0
$a = "Windows", "PowerShell", "2.0"
-join $a #返回结果:WindowsPowerShell2.0
$a -join ";" #返回结果:Windows;PowerShell;2.0
$b='@
a
b
c
@'
(-split $b) -join "" #返回结果:abc
-Split:(-cSplit 区分大小写)
一元拆分运算符 (-split <string>) 的优先级高于逗号。因此,如果向一元拆分运算符提交逗号分隔的字符串列表,将只拆分第一个字符串(第一个逗号之前的部分)。
要拆分多个字符串,请使用二元拆分运算符 (<string> -split <delimiter>)。可将所有字符串都括在圆括号内,或在变量中存储这些字符串,然后向拆分运算符提交该变量。
示例:
-split "1 2", "a b"
返回结果:
1
2
a b
"1 2", "a b" -split " "
返回结果:
1
2
a
b
-split ("1 2", "a b")
返回结果:
1
2
a
b
$a = "1 2", "a b"
-split $a
返回结果:
1
2
a
b
$c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"
$c -split ",", 5 #使用逗号为分隔符,一共最多返回5行,剩下的会都在最后一行显示
#返回结果:
Mercury
Venus
Earth
Mars
Jupiter,Saturn,Uranus,Neptune
$c -split {$_ -eq "e" -or $_ -eq "p"} #使用 e 或者 p 为分隔符
#返回结果:
M
rcury,V
nus,
arth,Mars,Ju
it
r,Saturn,Uranus,N
tun
"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split '[et]' #使用e 或者 t为分隔符
#返回结果:
M
rcury,V
nus,
ar
h,Mars,Jupi
r,Sa
urn,Uranus,N
p
un
"a,b,c,d,e,f,g,h" -split ",", 3 #使用逗号拆分为3个子字符串
#返回结果:
a
b
c,d,e,f,g,h
"a,b,c,d", "e,f,g,h" -split ",", 3 #将两个字符串分别拆分为3个子字符串
#返回结果:
a
b
c,d
e
f
g,h
$a = @'
1The first line.
2The second line.
3The third of three lines.
'@
$a -split "^\d", 0, "multiline" #按第一个数字拆分$a中的每一行。
该语句使用 Multiline 选项来识别每一行和每一个字符串的开头。
0 值表示 Max-substrings 参数的"全部返回"值。仅当指定 Max-substrings 值时才能使用如 Multiline 等选项。
使用 Multiline 模式可识别行和字符串的开头和结尾。仅当与 RegexMatch 一起使用时有效。默认设置为 Singleline,使用 Singleline 模式只识别字符串的开头和结尾
#返回结果:
The first line.
The second line.
The third of three lines.