HOWTO · PowerShell

在 PowerShell 中將字串拆分為單獨的變數

本教程將介紹在 PowerShell 中將字串拆分為單獨的變數。

本頁內容

若要在 PowerShell 中將字串的各部分指定給不同變數,請先將字串拆分成陣列,再將所需元素指定給變數。分隔符是字面字元時,請使用 String.Split() 方法;分隔符應採用正規表示式時,則使用 -split 運算子。

以下範例會顯示每次指定變數後得到的值。

使用 String.Split() 方法拆分字串

String.Split() 是字串的方法。若未提供分隔符引數,它會在空白字元處拆分文字。傳回值是陣列,因此可以使用索引將各部分存入具名變數。第一個元素的索引是 0。

執行此範例:

本節中的程式碼以及顯示的標籤或輸出仍為英文。

$text = "Hello World"
$parts = $text.Split()
$first = $parts[0]
$second = $parts[1]
$first
$second

$record = "North|East|West"
$limitedParts = $record.Split([char[]]@('|'), 2)
$region = $limitedParts[0]
$remaining = $limitedParts[1]
$region
$remaining

第一組變數會分別取得 Hello 和 World。接受字元陣列與計數值的多載,可讓你指定字面分隔符並限制傳回部分的數量。在第二個範例中,直立線是分隔符,計數值為二,因此 $region 會取得第一個直立線之前的文字,而 $remaining 會取得其後的所有文字,包括後續的直立線。分隔符不會包含在傳回的部分中。

若要以數種字面字元中的任一個作為分隔符,請傳入字元陣列。例如,Split([char[]]@(',', ';')) 會將逗號或分號視為分隔符。如果連續分隔符會影響資料,請確認所選多載如何處理因此產生的相鄰部分,並視需要明確選擇 StringSplitOptions 值。當分隔符是字面字元,而你需要使用 .NET 多載指定分隔符、選項或部分數上限時,這個方法很實用。

使用 -split 運算子拆分字串

-split 運算子是精簡的替代方式,會將正規表示式用作分隔符。你可以用它依照模式拆分,例如一個或多個空白字元(\s+),或某個字元集合中的任一字元。和方法一樣,它會傳回陣列,可將元素指定給不同變數。選用的限制值會控制拆分後部分的數量上限;達到最後一次允許的拆分後,剩餘文字會保留在最後一部分。

執行此範例:

本節中的程式碼以及顯示的標籤或輸出仍為英文。

$fruitLine = "apple,banana;cherry|date"
$firstFruit, $remainingFruit = $fruitLine -split '[,;|]', 2
$firstFruit
$remainingFruit

此處的字元類別 [,;|] 會比對逗號、分號或直立線。因為拆分計數為二,第一個變數會取得 apple,第二個變數則會取得 banana;cherry|date。與 String.Split() 不同,-split 會將分隔符解讀為正規表示式;若要將正規表示式中具有特殊意義的字元視為一般字面字元,請先跳脫它們。

若要測試字串是否符合某個模式,或擷取比對到的群組,請使用 -match。它不會在分隔符比對處拆分字串;要執行這項工作,請使用 -split。若要使用字面分隔符及多載專屬選項,請選擇 String.Split();若要使用正規表示式分隔模式,請選擇 -split。無論採用哪一種方式,若後續命令需要個別值,都可以將傳回的陣列元素指定給具名變數。