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:\> "http://www.baidu.com".Split('./:')
http


www
baidu
com

  上述例子是將某個字符以“.” “/” “:”來分割,分割出的結果含有兩個空白,原因是“/”和“:”都是分隔符,當分割了“:”后,http會與之后的字符分為兩行,此時用需要用“/”來分割,在此基礎上再次分割,因此產生了空白行,空白行的取消方法如下:

PS C:\> "http://www.baidu.com".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 ") 
0

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了!

 

 

  

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM