PowerShell 中的所有替換方法
-
PowerShell 中
replace()
方法介紹 -
在 PowerShell 中使用
replace()
方法 - 在 PowerShell 中刪除字符
- 在 PowerShell 中替換多個實例
- 在 PowerShell 中使用替換運算符
- 在 PowerShell 中刪除字符
- 在 PowerShell 中替換多個實例
- 在 PowerShell 中使用正則表達式替換字符串
- 在 PowerShell 中轉義正則表達式字符

Windows PowerShell 可以像許多其他語言一樣處理文本和字符串。其中一個有價值的特徵是使用 Windows PowerShell 來替換字符、字符串甚至文件內的文本。
本文將討論使用不同的 PowerShell 替換方法來替換或刪除字符、文本和單詞。
PowerShell 中 replace()
方法介紹
我們可以使用 Windows PowerShell 來替換字符串中的字符。例如,創建一個類型為字符串的 PowerShell 變量,我們將在整個文章中使用它。
powershellCopy$string = 'hello, world'
我們希望將字符串中的 hello
替換為 hi
,使得 $string
變量的值為 hi, world
。
為了實現這一點,Windows PowerShell 需要找出特定文本的位置,一旦找到,就會用用戶提供的值替換該部分文本。
在 PowerShell 中使用 replace()
方法
在 Windows PowerShell 中,替換字符串的最方便方法之一是使用 replace()
方法。replace()
方法接受兩個參數。
- 要查找的字符串。
- 要替換找到的文本的字符串。
正如下文所示,Windows PowerShell 定位到單詞 hello
並將其替換為字符串 hi
。該方法返回最終結果 hi, world
。
讓我們使用之前創建的 $string
變量作為示例。
代碼:
powershellCopy$string.replace('hello', 'hi')
輸出:
textCopyhi, world
我們可以在任何字符上調用 replace()
方法,以將任何文字字符串替換為另一個。如果找不到要替換的字符串,replace()
方法將不會返回任何內容。
此外,我們不需要將字符串賦值給變量即可替換字符串中的文本。我們可以直接在字符串上調用 replace()
方法。
代碼:
powershellCopy'hello world'.replace('hello', 'hi')
在 PowerShell 中刪除字符
也許我們需要從另一個字符串中刪除文本中的字符,而不是用其他東西來替換它。通過指定一個空字符串,我們也可以做到這一點。
代碼:
powershellCopy$string.replace('hello', '')
輸出:
textCopy, world
在 PowerShell 中替換多個實例
由於 replace()
方法返回一個字符串數據類型的值,為了替換另一個實例,我們可以將另一個 replace()
方法調用連接並附加在末尾。然後 Windows PowerShell 將在實際輸出上調用 replace()
方法。
代碼:
powershellCopy$string.replace('hello', '').replace('world', 'earth')
輸出:
textCopy, earth
我們可以根據需要鏈接任意多的 replace()
方法調用,但如果有多個字符串需要替換,我們應考慮使用替換運算符。
在 PowerShell 中使用替換運算符
我們也可以使用 Windows PowerShell 的替換運算符來替換文本。替換運算符類似於我們提供字符串以查找和替換的方法。
但是,它有一個顯著的優勢:使用正則表達式 (regex) 來查找匹配的字符串。根據前面的示例,我們可以使用替換運算符將 hello
替換為 hi
,如下所示。
代碼:
powershellCopy$string -replace 'hello', 'hi'
輸出:
textCopyhi, world
在 PowerShell 中刪除字符
像 replace()
方法一樣,我們也可以使用替換運算符從字符串中刪除字符。與 replace()
方法不同,我們還可以完全排除要替換的字符串作為參數,並且你會發現相同的效果。
代碼:
powershellCopy$string -replace 'hello', ''
$string -replace 'hello'
輸出:
textCopy, world
, world
在 PowerShell 中替換多個實例
我們還可以將替換運算符的使用鏈接在一起。
代碼:
powershellCopy$string -replace 'hello', 'hi' -replace 'world', 'earth'
輸出:
textCopyhi, earth
在 PowerShell 中使用正則表達式替換字符串
在 PowerShell 中使用 replace()
替換字符串是有限的。我們只能使用文字字符串。
我們不能使用通配符或正則表達式。如果你正在執行中級或高級操作,我們應該使用替換運算符。
我們有一個包含由變量創建的字符串的腳本。我們希望將該字符串更改為 goodbye, world
,而不管其值。
這將幫助將 hello, world
和 hi, world
變為 goodbye, world
。我們需要使用正則表達式,並用正則表達式匹配文本中幾乎任何特定模式以實現這一點。
在這個例子中,我們可以使用表達式 hello|hi
通過正則表達式 "或"
運算符或管道 (|
) 字符來匹配這兩個所需的字符串。
代碼:
powershellCopy'hello, world' -replace 'hello|hi', 'goodbye'
'hi, world' -replace 'hello|hi', 'goodbye'
輸出:
textCopygoodbye, world
goodbye, world
一旦我們學會如何使用正則表達式查找字符串,我們就可以使用 PowerShell 替換與任何模式匹配的通配符字符串。
在 PowerShell 中轉義正則表達式字符
在上面的正則表達式示例中,搜索的字符串不包含任何特殊的正則表達式字符。然而,正則表達式語言有某些字符是其使用的,這些字符不像大多數字母和數字那樣被字面解釋。
例如,我們可能需要替換字符串中的文本。該字符串包含幾個特殊的正則表達式字符,如括號和問號。
然後我們嘗試將字符串 [hello]
替換為 goodbye
。
代碼:
powershellCopyPS> '[hello], world' -replace '[hello]', 'goodbye'
輸出:
textCopy[goodbyegoodbyegoodbyegoodbyegoodbye], wgoodbyergoodbyed
那不是我們的本意。當我們在要查找的字符串中使用特殊的正則表達式字符 ([hello]
) 時,就會發生這種情況。
為了避免這個問題,我們可以通過在每個字符前添加反斜杠來轉義這些特殊字符,或使用 Escape()
方法。下面我們可以看到使用反斜杠轉義每個特殊字符的效果。
代碼:
powershellCopy'[hello], world' -replace '\[hello\]', 'goodbye'
輸出:
textCopygoodbye, world
或者,我們可以使用正則表達式類型的 Escape()
方法自動刪除所有特殊字符。
代碼:
powershellCopy'[hello], world' -replace ([regex]::Escape('[hello]')), 'goodbye'
輸出:
textCopygoodbye, world
我們應該使用 Escape()
方法,因為它會轉義所有特殊字符,我們不必記住它們。
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn