powershell字符串操作
字符串操作是powershell中重要的⼀项操作,学会使⽤字符串操作的⼀些常⽤⽅法会⼤⼤提⾼脚本编写效率,以下列出⼏个经常⽤到的字符串操作⽅法:
前提:本⼈的powershell版本是
1、字符串格式化
在说字符串格式化,⾸先得说单双引号的作⽤,在powershell中双引号不会屏蔽变量,但单引号会屏蔽,⽰例如下:
PS C:\> $a = "i have a dream."
PS C:\> Write-Output "this is $a"
this is i have a dream.
PS C:\> Write-Output 'this is $a'
this is $a
由上述⽰例我们可以看出,使⽤单引号会对变量进⾏转义,⽽使⽤双引号则会输出变量的值。
接下来,再看看字符串格式化的使⽤,⽰例如下:
PS C:\> $a = "i have a dream."
PS C:\> $b = " the variable is $a ,value is {0},there are {1} words" -f $a,4
PS C:\> Write-Output $b
the variable is i have a dream. ,value is i have a dream.,there are 4 words
字符串格式换中,使⽤{0},{1},{2}...来代替字符串中变量的位置,-f 后的参数与前⾯的位置变量相对应。
接下来我们来探究⼀下花括号{} 内部的秘密:
秘密⼀——固定⾏宽,即指定每次输⼊的字符长度,不⾜的空⽩补全。
PS C:\> $a = "name"
PS C:\> $b = "age"
PS C:\> $c = "sex"
PS C:\> $d = "{0,-15}{1,-15}{2,-15}"
PS C:\> $d = "{0,-15}{1,-15}{2,-15}" -f $a,$b,$c
PS C:\> Write-Output $d
name age sex
{0,-15}表⽰的是第⼀的变量,占位字符总长度是15,“-”代表左对齐
【注】{位置,±占位总长},其中“+”代表右对齐,“-”代表左对齐
秘密⼆——将数字转换成百分数
PS C:\> "{0:p}" -f 0.31415926
31.42%
PS C:\> "{0:p3}" -f 0.31415926
31.416%
PS C:\> "{0:p5}" -f 0.31415926
31.41593%
PS C:\> "{0:p}" -f "1.23"
1.23
字符串长度不足补空格 百分数转换是⽤“p”来表⽰的,默认保留两位有效数字,若“p”后的数字是5,那么就代表保留五位有效数字。
注意:百分数的转换针对的是整型和浮点型,不能对字符进⾏转换。
秘密三——保留⼏位⼩数
PS C:\> "{0:n0}" -f 3.1415
3
PS C:\> "{0:n}" -f 3.1415
3.14
PS C:\> "{0:n3}" -f 3.1415
3.142
n代表要保留⼏位有效数字,默认是两位有效数字
2、字符串替换
PS C:\> "i have a dream" -replace "dream","apple"
i have a apple
PS C:\> "i have a dream" -replace "DREAM","apple"
i have a apple
PS C:\> "i have a dream" -creplace "DREAM","apple"
i have a dream
PS C:\> "i have a dream" -creplace "dream","apple"
i have a apple
字符串替换是“-replace”参数,-replace 可以不区分⼤⼩写,⽽-creplace严格按照⼤⼩写来匹配。3、包含
PS C:\> "i have a dream" -match "i"
True
PS C:\> "i have a dream" -match "I"
True
PS C:\> "i have a dream" -cmatch "i"
True
PS C:\> "i have a dream" -cmatch "I"
False
PS C:\> "i have a dream".Contains("have")
True
PS C:\> "i have a dream".Contains("Have")
False
判断某个字符串是否包含,返回True或False,“-cmatch”严格匹配⼤⼩写。
其实-match的作⽤不⽌这些,下⼀节会提到它的扩展。
4、过滤器
PS C:\> "3.1415926" -like "3.14*"
True
“-like”参数⽀持基本的正则表达式,*代表任意所有,?代表⼀个字符,.只代表.
判断字符串的格式是否符合⽤户所要求的,如上例,“3.14*”表⽰已以3.14开头的字符,匹配即为True。
5、字符串分割(将字符串转成列表)
PS C:\> "i have a dream".Split()
i
have
a
dream
PS C:\> "i have a dream".Split("a")
i h
ve
dre
m
split的作⽤是将字符串中按照某个字符来分割成列表,默认以空格分割,⽀持多个分隔符
PS C:\> "www.baidu".Split('./:')
http
www
baidu
com
上述例⼦是将某个字符以“.” “/” “:”来分割,分割出的结果含有两个空⽩,原因是“/”和“:”都是分隔符,当分割了“:”后,http会与之后的字符分为两⾏,此时⽤需要⽤“/”来分割,在此基础上再次分割,因此产⽣了空⽩⾏,空⽩⾏的取消⽅法如下:
PS C:\> "www.baidu".Split('./:',[StringSplitOptions]::RemoveEmptyEntries)
http
www
baidu
com
6、字符串⽐较
PS C:\> "i have a dream ".CompareTo("i have a dream")
1
PS C:\> "i have a dream ".CompareTo("i have a dream ")
PS C:\> "i have a dream ".CompareTo("i have a Dream ")
-1
字符串⽐较不⽀持“-CompareTo”,使⽤⽅法是“.CompareTo”,严格区分⼤⼩写,完全⼀致才返回“0”。
7、字符串的长度
PS C:\> "i have a dream".Length
14
8、插⼊新的字符串
PS C:\> "i have a dream".Insert(9,"new ")
i have a new dream
Insert的使⽤⽅法,在某个位置插⼊什么字符串,字符串的第⼀个字符的下标是0,从0开始算起,上述例⼦,在下位为(9+1)的位置插
⼊“new ”字符串
9、删除指定的字符串
PS C:\> "i have a dream".Remove(9,5)
i have a
同上述例⼦,下标从0开始,在某个位置删除⼏个字符。
10、将多个字符串按特定规则组成⼀个
PS C:\> "i","have","a","dream" -join(" ")
i have a dream
上述例⼦是将多个字符串以空格分割组成,同样也可以以其他符合组合,⽐如:
PS C:\> "10","20","30" -join(":")
10:20:30
总结
啊!
没啥可总结的,⽤到过来查⼀下就ok了!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论