Powershell 提供了对字符串的合并运算符,链接运算符 -join 将一组字符串链接成单个字符串,子字符串按其在命令中出现的顺序添加到生成的字符串中。
shell
链接运算符数组
Powershell中字符串的链接运算符的语法以下:
ide
-Join <String[]> <String[]> -Join <Delimiter>
参数解释。
spa
<String[]>xml
要链接的子字符串数组,即要对哪些子字符串进行链接。
blog
<Delimiter>字符串
指定放在被链接字符串之间的一个或多个字符。默认为空字符串("")。须要注意的是,拆分运算符会在拆分后的字符串中去掉分隔符,而链接运算符会在链接后的字符串中插入指定的分隔符,拆分和合并是两个相对的运算。
get
须要注意的是, -Join <String[]> 格式称为一元链接运算符,它的优先级高于逗号。因此,若是向一元联接运算符提交逗号分隔的字符串列表,则只有第一个字符串(第一个逗号以前的部分)才会提交给联接运算符。例如:string
PS C:\> -join "a","c","e" a c e
可是如果要使用一元联接运算符,须要请将被链接的字符串用圆括号括起,或将被链接的字符串存储在变量中,而后提交该变量以进行链接。例如:it
PS C:\> -join ("a","b","c") abc PS C:\> $x = "a","b","c" PS C:\> -join $x abc
除了链接运算符 -join ,在 Powershell算术运算符 中讲过,算术运算符 "+" 也具备字符串的链接功能,可是要求是第一个操做数必须是字符串,否会尝试算术运算加的运算。例如:
PS C:\> "a"+"b"+"c" abc
在实际运用中,使用 "+" 进行字符串的链接很方便,也很直观,也是使用频率很高的字符串链接操做。
下面再举三个使用 -join 进行字符串链接的例子:
PS C:\> -join ("Windows","Powershell","5.0") WindowsPowershell5.0 PS C:\> "Windows","Powershell","5.0" -join " " Windows Powershell 5.0 PS C:\> $x = "Wind","sP","ershell" PS C:\> $x -join "ow" WindowsPowershell
最后举例说明,利用字符串的分隔运算符 -split 和链接运算符 -join 能够将多行内容转换到一行,例如:
PS C:\> $a = @' >> a >> b >> c >> '@ >> PS C:\> (-split $a) -join " " a b c
上面语句中的$a = @''@ 被称为 here-string ,即会将两个@ 之间的内容视为一个字符串,这是 Powershell中的特殊运算符。而在实际使用中,xml 文件内容可能是多行的,利用此方法能够从新联接 XML 文件中已保存在 here-string 中的字符串。
总结
Powershell 中利用 -join 关键字对字符串进行链接操做,也能够使用算术运算符 "+" 进行字符串的链接,可是前提是第一个操做数必须是字符串。链接和拆分是对立的运算,例如合并能够使用建立指定的时间"+"指定名称的文件名,而时间和指定名称可能来自不一样的地方。