字符串
字符串就是字符组成的数组,在Powershell中,可通过单引号或双引号来定义字符串。Powershell提供了多种字符串操作命令,包括连接、截取、分割、替换、大小写转换等,示例如下
$a = "Hello, " + "World!"
$a.split(',') # 依次返回Hello World!
$a -split ',' # 同上
$a.substring(7, 5) # 从第7个字母截取5位
$a -replace 'World','PowerShell' # 用PowerShell 取代World
$a.ToLower() # hello, world!
$a.ToUpper() # HELLO, WORLD!
【split】用于字符串分割,将根据分割符返回一个字符串列表。split提供两种调用方式,既可通过内置方法的形式,也可以通过指令参数的形式。
【substring】用于字符串截取,其输入参数为开始截取的位置和截取字符串的长度。
【replace】用于字符串替代,也提供内置方法和参数指令两种调用方式。
引号问题
在PowerShell中,单引号和双引号都可以用于字符串,但二者存在区别。括在双引号中的字符串是可扩展字符串,可直接对美元符号后面的变量进行字符串转化;用单引号括起来的字符串是逐字字符串,将不对美元符号进行转义。
例如,下面 c c c和 d d d分别用单引号和双引号来创建字符串,二者打印结果完全不同, d d d识别到了变量 a a a,而 c c c并未识别。
$c = '$a'
$d = "$a"
echo $c # $a
echo $d # Hello, World!
除了这两种字符串之外,还有一种通过@进行引用的字符串,可用于引用多行文本,示例如下
$e = @"
if you miss the train i'm on,
you will know that i am gone
"@
echo $e
# if you miss the train i'm on,
# you will know that i am gone
格式化
Powershell中提供了字符串格式化方法,其经典用法是调用[String]::Format函数,来将字符串中的花括号替代为某个变量。在PS2.0以及更高版本中,提供了这一操作的语法糖,即-f指令。下面就是这两种格式化方法
$a=1; $b=2
[String]::Format("{0}+{1}={2}", $a,$b,$a+$b) # 1+2=3
"{0}+{1}={2}" -f $a,$b,($a+$b)
需要注意在使用-f参数的时候,存在运算次序的问题。如果不在后面$a+$b
外面加上括号,那么其输出结果将是
1
+
2
=
12
1+2=12
1+2=12,即只把前面的$a
当作需要格式化的数值,而将后面的+$b
考虑成字符串拼接操作。