说明:
split操作符把一个或多个串分割成子串。
1.分隔符:默认是空白符,包括空格,不可打印字符(如换行符,\t等)。可以指定字符,字符串,模式做分隔符;或者在脚本块中指定。注意:split操作符在分隔符(串)匹配时使用正则表达式。
2.子串的最大数目:默认返回所有子串。若指定的数目小于子串的数目,多余的串会被连接到最后一个字符串后。(限定字串的最大数目,就可以间接的限定分割的次数)3.选项:指明条件。如简单匹配,多行匹配。注意:选项有效,只有指定子串的最大数目时,才有效。
语法:
参数名不会出现,只出现参数值。当分隔符规则使用时:-iSplit和-split不区分大小写。只有-cSplit区分大小写。
-Split <String>
-Split (<String[]>)<String> -Split <Delimiter>[,<Max-substrings>[,"<Options>"]]<String> -Split {<ScriptBlock>}[,<Max-substrings>]
实例:
-split "red yellow blue green"#串也可以是多行。
结果:
red
yellow
blue
green
#指明分隔符,默认分隔符是空白符:空格和不可打印的字符,如`n(换行),`t(tab键)"Lastname:FirstName:Address" -split ":"#默认结果中不显示分隔符
结果:
Lastname
FirstName
Address
"Lastname:FirstName:Address" -split "(:)"#用括号包裹的分隔符会留在输出结果中。
Lastname
:
FirstName
:
Address
"Lastname/:/FirstName/:/Address" -split "/(:)/"# :留在结果中
Lastname
:
FirstName
:
Address
"Lastname/:/FirstName/:/Address/:/ddddd" -split "(/:)/",2 #/:留在结果中
Lastname
/:
FirstName/:/Address/:/ddddd
#可指明要返回的子串的最大数目。默认是所有子串。若指明的数比实际分割出来的小,#则多余的会连接在最后一个串中$c="Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"$c -split ",", 5#用逗号隔开。首先指明分隔符是逗号,再指明返回5个字串。指明子串值为0,相当于不指定。数字为负数,powershell 7才支持。
结果:
Mercury
Venus
Earth
Mars
Jupiter,Saturn,Uranus,Neptune #多余的字串连在了最后一个串上。#对于多个串,操作符会应用到每个串。$c='a,b,c','1,2,3,4,5'$c -split ',', 3
结果:
a
b
c
123,4,5
#powershell 7才支持最大串数目为负数。从后往前分割,但结果仍从前往后输出$c="Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"$c -split ",", -5
#分隔符可以是一个表达式,该表达式指明一个规则。#表达式用中括号包括起来,表达式的结果是布尔值。#此时匹配规则是简单匹配$c="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
#对于多个对象的分割,防止优先级问题,最后用圆括号直接指明优先级#分隔符是一个字符串,此时匹配原则:正则匹配"aa\\bb" -split '\\\\'#结果:aa和bb#区分大小写的分割"abaBa" -cSplit 'b'#结果:a和aBa#分隔符可以是正则表达式"Uranus,Neptune" -split '[er]'
U
anus,N
ptun
#对多个串执行分割操作"a,b,c,d", "e,f,g,h" -split ",", 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"#只有最大串数目指明,multiline参数才会有效。同时0表示返回所有的子串。#明确指明使用简单匹配"This.is.a.test" -split ".", 0, "simplematch"#同样,只有最大串数目指明,simplematch参数才会有效。"This.is.a.test" -split "\."结果一致
This
is
a
test#根据条件,选择分隔符$i=1$c="LastName, FirstName; Address, City, State, Zip"$c -split $(if($i -lt 1){","}else{";"})
结果:
LastName, FirstName
Address, City, State, Zip
.split()方法
语法:
.Split(strSeparator [, MaxSubstrings][, Options])
strSeparator:分隔符。默认是空格,换行符,\tab。
实例
("C:\a!a\b/b").split("/!\") #多个分隔符,执行或操作。
C:
a
a
b
b
("C:\a!a\b/b").split("/!\")[0]#获取分割结果的第一部分。类似数组下标。