PowerShell: 文字列を置換する Replace(), -replace演算子
Replaceメソッド
Replaceメソッドは.NET Framework Stringクラスのメソッドです。 正規表現は使えません。
文字列.Replace(置換前文字列, 置換後文字列)
第1引数に置換前の文字列を指定し、
第2引数に置換後の文字列を指定します。
一致したすべての置換前文字列を置換後文字列に置き換えます。
「最初の1つだけ置換する」といった回数指定はできません。
次のサンプルコードはReplaceメソッドを使った文字列置換の例です。
$s = "abcabc" $s.Replace("a", "z") # zbczbc $s.Replace("x", "z") # abcabc
1番目は一致した文字列が置換され、 2番目は一致しないので元々の文字列が返されます。
大文字・小文字の区別
デフォルトではReplaceメソッドは大文字・小文字を区別します。 区別せずに置換したい場合は第3引数に「1」を指定します。
# 大文字・小文字の区別 $s = "abcabc" # デフォルトでは区別する $s.Replace("A", "z") # abcabc # 区別しない $s.Replace("A", "z", 1) # zbczbc
-replace演算子
正規表現を使って文字列を置換する場合は、 PowerShellの-replace演算子を使います (正規表現を使わなくても大丈夫です)。
文字列 -replace 置換前文字列, 置換後文字列
-replaceの後に置換前文字列(正規表現)、 カンマで区切って置換後の文字列を記述します。 一致したすべての置換前文字列を置換後文字列に置き換えます。
次のサンプルコードは-replace演算子を使った文字列置換の例です。
$s = "abcabc" $s -replace ".bc", "zbc" # zbczbc $s -replace "a.b", "azb" # abcabc
1番目の正規表現は一致するので置換され、 2番目は一致しないので元々の文字列になります。
大文字・小文字の区別
デフォルトでは-replace演算子は大文字・小文字を区別しません。 Replaceメソッドとは逆になります。
区別する場合はreplaceの前に「c」を付けて「-creplace」と記述します。 次のサンプルコードでは、1番目は大文字・小文字を区別せず、 2番目は区別しています。
# 大文字・小文字の区別 $s = "abcabc" # デフォルトでは区別しない $s -replace "A", "z" # zbczbc # 区別する $s -creplace "A", "z" # abcabc
参考サイト
String.Replace メソッド (System) | Microsoft Docs
比較演算子について - PowerShell | Microsoft Docs