PowerShell: 文字列演算子
PowerShellで使用する文字列演算子には
「+ += * -lile -notlike -match -notmatch -replace」があります。
文字列演算子は文字列の演算で使用する演算子です。
例えば「+」は文字列を連結し「"a" + "b"」は「"ab"」となります。
「-like -notlike -match -notmatch -replace」はPowerShellの公式ページでは 比較演算子として分類されていますが、 専ら文字列を扱う際に使用される演算子なので、 ここでは文字列演算子として分類しています。 以下でいくつかのグループに分けて文字列演算子を紹介します。
「+ += * *=」
まずは「+ += * *=」です。 この4つは算術演算子や代入演算子として使われるケースが多いですが、 文字列演算子としても使用できます。各演算子の意味は次の通りです。
演算子 | 説明 |
---|---|
+ | 文字列を連結 |
+= | 連結して代入 |
* | 文字列を繰り返す |
*= | 繰り返して代入 |
以下は具体的な使用例です。
# + Write-Host ("a" + "b") # ab # += $s = "a" $s += "b" Write-Host $s # ab # * Write-Host ("a" * 3) # aaa # *= $a = "a" $a *= 3 Write-Host ($a) # aaa
「+」演算子の少し紛らわしい点について説明します。 「文字列 + 文字列」は文字列連結となり、 「数値 + 数値」は数値演算となるのは当然ですが、 「文字列 + 数値」は文字列連結、 「数値 + 文字列」は数値演算となるので少し注意が必要です。
Write-Host (1 + 2) # 3 数値演算 Write-Host ("1" + "2") # 12 文字列連結 Write-Host ("1" + 2) # 12 文字列連結 Write-Host (1 + "2") # 3 数値演算
「-like -notlike -match -notmatch」
次は「-like -notlike -match -notmatch」です。 「like」はワイルドカード(*)による比較で、 「match」は正規表現による比較になります。 各演算子の意味は次の通りです。
演算子 | 説明 |
---|---|
-like | ワイルドカード比較で一致する場合True |
-notlike | ワイルドカード比較で一致しない場合True |
-match | 正規表現比較で一致する場合True |
-notmatch | 正規表現比較で一致しない場合True |
以下は具体的な使用例です。 各演算子でTrueとなる場合とFalseとなる場合を記述しています。
Write-Host ("abcde" -like "abc*") # True Write-Host ("abcde" -like "*abc") # False Write-Host ("abcde" -notlike "abc*") # False Write-Host ("abcde" -notlike "*abc") # True Write-Host ("abcde" -match "a.c") # True Write-Host ("abcde" -match "a.bc") # False Write-Host ("abcde" -notmatch "a.c") # False Write-Host ("abcde" -notmatch "a.bc") # True
大文字・小文字の区別
これらの演算子を使用する際に、 デフォルトでは大文字・小文字は区別されません。 区別したい場合は各演算子の先頭に「c」を付けて 「-clike」「-cmatch」のように記述します。 区別しない場合は「i」をつけて「-ilike」と記述するか、 何もつけずに「-like」と記述します。 次の「-replace」も同じです。
オプション | 意味 |
---|---|
c | 大文字・小文字を区別する |
i | 区別しない(デフォルト) |
「-replace」
「-replace」は文字列を置換するための演算子で、 置換した結果の文字列を返します。
演算子 | 説明 |
---|---|
-replace | 文字列置換 |
次のサンプルコードでは文字列"abcde"に対して、 "abc"を"xyz"に置換しています。
$s = "abcde" -replace "abc", "xyz" Write-Host $s # xyzde
(まとめ記事: PowerShell 演算子)