PowerShell String對象方法小結_PowerShell

來源:互聯網
上載者:User

從之前的章節中,我們知道PowerShell將一切儲存在對象中,那這些對象中包含了一系列中的稱之為方法的指令。預設文本儲存在String對象中,它包含了許多非常有用的處理文本的命令。例如,要確定一個檔案的副檔名,可以使用LastIndexOf()擷取最後一個字元“.”的位置,繼續使用Substring()擷取副檔名子串。

PS> $path = "C:\prefs.js" PS> $path.Substring( $path.LastIndexOf(".")+1 ) Js

另外一條途徑,使用Split方法,對檔案的完整名稱進行分割,得到一個字串數組,取最後一個元素,PowerShell中可以通過索引-1來擷取數組中最後一個元素。

PS> $path.Split(".")[-1] Js

下面的表格會給出String對象的所有方法:

函數 描述 樣本
CompareTo() 與另一個字串比較 (“Hello”).CompareTo(“Hello”)
Contains() 是否包含制定子串 (“Hello”).Contains(“ll”)
CopyTo() 拷貝子串至新字串中 $a = (“HelloWorld”).toCharArray()(“User!”).CopyTo(0,

$a, 6, 5)$a

EndsWith() 是否以制定子串結尾 (“Hello”).EndsWith(“lo”)
Equals() 是否與另一個字串相同 (“Hello”).Equals($a)
IndexOf() 返回第一次匹配的所索引 (“Hello”).IndexOf(“l”)
IndexOfAny() 返回字串中任一字元的最初相符索引 (“Hello”).IndexOfAny(“loe”)
Insert() 在指定位置插入字串 (“HelloWorld”).Insert(6,”brave “)
GetEnumerator() 枚舉字串中所有字元 (“Hello”).GetEnumerator()
LastIndexOf() 字元的最後匹配位置 (“Hello”).LastIndexOf(“l”)
LastIndexOfAny() 任一字元的最後匹配位置 (“Hello”).LastIndexOfAny(“loe”)
PadLeft() 左邊補齊空白是字串至指定長度 (“Hello”).PadLeft(10)
PadRight() 右邊填充空白是字串至指定長度 (“Hello”).PadRight(10) + “World!”
Remove() 從指定位置開始移除指定長度 (“PsTips”).Remove(2,2)
Replace() 替換指定字串 (“PsTips”).replace(“Ps”,”PS1″)
Split() 以指定分隔字元切割字串 (“HelloWorld”).Split(“l”)
StartsWith() 是否以指定子串開始 (“HelloWorld”).StartsWith(“He”)
Substring() 從指定位置取指定長度子串 “HelloWorld”).Substring(4,3)
ToCharArray() 轉換成字元數組 (“HelloWorld”).toCharArray()
ToLower() 轉換成小寫 (“HelloWorld”).toLower()
ToLowerInvariant

()

以地區規則轉換成小寫 (“HelloWorld”).ToUpperInvariant()
ToUpper() 轉換成大寫 (“HelloWorld”).ToUpper()
ToUpperInvariant

()

以地區規則轉換成大寫 (“HelloWorld”).ToUpperInvariant

()

Trim() 移除字串前後空格 (” HelloWorld “). Trim()
TrimEnd() 移除字串結尾的空格 (“HelloWorld “). TrimEnd()
TrimStart() 移除字串開始的空格 (” HelloWorld”). TrimStart()
Chars() 返回指定位置的字元 (“Hello”).Chars(0)

以Split()為例來分析方法

在之前的章節中,我們已經知道可以通過Get-Member來查看一個對象中包含了那些可以被調用的方法。正好最為一個簡單的回顧,來查看Split的定義。

PS C:\> ("jb51.net" | Get-Member Split).definition string[] Split(Params char[] separator), string[] Split(char[] separator, int count), string[] Split(char[] separator, System.StringSplitOptions options), string[] Split(char[] separator, int count, System.StringSplitOptions options), string[] Split(string[] separator, System.StringSplitOptions options), string[] Split(string[] sepa rator, int count, System.StringSplitOptions options)

Define屬性可以擷取方法參數定義,但是可讀性比較坑爹。我們仍然用上面表格中的Replace方法,將分隔字元稍作替換,即可增強可讀性。

PS C:\> ("jb51.net" | Get-Member Split).definition.Replace("), ", ")`n")string[] Split(Params char[] separator)string[] Split(char[] separator, int count)string[] Split(char[] separator, System.StringSplitOptions options)string[] Split(char[] separator, int count, System.StringSplitOptions options)string[] Split(string[] separator, System.StringSplitOptions options)string[] Split(string[] separator, int count, System.StringSplitOptions options)

之前說過反引號,類似進階語言中的轉義符反斜線。

從上面的輸出可以發現Split有6種不同的調用方法,而之前可能更多的只使用過一個參數的方法。PowerShell在處理文本時,可能會碰到多個分隔字元,而Split方法調用只須一次即可。

PS C:\> "http://www.jb51.net".split(":./")httpwwwpstipsnet

中間有空白,咋整,能移除嗎,StringSplitOptions輕裝上陣:

PS C:\> "http://www.jb51.net".split(":./",[StringSplitOptions]::RemoveEmptyEntries)httpwwwpstipsnet

之前有一個小演算法題,移除字串中相鄰的重複的空格。在不考慮效率的前提下,可以使用Split先分割,分割後再將得到的元素以指定分隔字元拼接。但是拼接用到的Join方法,並不屬於string對象,而屬於String類,也正是下面要講的。

Text and Regular Expressions

原文: http://www.jb51.net/string-object-methods.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.