PowerShell の contains 演算子
PowerShell には、指定した入力文字列に一致する要素をフィルター処理/比較または検索できるさまざまな演算子があります。-contains
は、包含タイプの演算子として分類される主要な比較演算子の 1つです。
4つの主要な包含タイプ演算子があります。
-contains
-notcontains
-in
-notin
この記事では、-contains
演算子のみに焦点を当てています。この演算子は、一致する場合は常にブール値(true / false)を返します。また、パフォーマンス面では、-contains
演算子は、最初の一致が見つかるとすぐに入力の比較を停止するため、結果を返すのが非常に高速です。
PowerShell の -contains
演算子
この演算子を使用して、コレクションに特定の要素が含まれているかどうかを確認できます。構文は次のとおりです。
[set/collection] -contains [test-value or test-object]
[set/collection]
は、文字列値のセット(カンマ区切り)にすることができます。たとえば、 "Hello"
または "FOX", "2ndLane"
です。
[test-value または test-object]
は、要素または要素のセット(コレクション)にすることができます。たとえば、 "Hello"
または "Hello", "FOX", "No2"
です。
特定の要素を確認する
- 例 01:
"Hello", "FOX", "2ndLane" -contains "2ndLane"
出力:
True
入力要素/値は"2ndLane"
で、左側のコレクション/セットにあります。したがって、出力/結果は明らかに True
です。
- 例 02:
"Hello", "FOX", "2ndLane" -contains "NotInTheCollection"
出力:
False
入力要素/値は"NotInTheCollection"
であり、右側のコレクションには含まれていません。したがって、上記のコマンドは False
と評価されました。
-contains
演算子に関する重要な事実は、指定されたコレクション/セット内の正確な入力要素をチェックすることです。部分/サブ文字列が入力要素として指定されている場合、コマンドは False
として評価されます。
- 例 03:
"Hello", "FOX", "FullStringGiven" -contains "StringGiven"
出力:
False
上記の例では、入力要素は"StringGiven"
ですが、右側のコレクションの"FullStringGiven"
要素のサブストリングです。したがって、入力要素は右側のコレクションの正確な要素と一致せず、結果は期待どおり False
になります。
PowerShell の -contains
演算子を使用して要素/コレクションのセットを確認する
-contains
演算子の最大の利点の 1つは、指定されたコレクション/セットが入力コレクションと一致するかどうかを検出するために使用できることです。オペレーターは、左側(指定されたコレクション)と右側(入力コレクション/テストコレクション)に同じインスタンスが存在するかどうかを確認することに注意してください。つまり、これらの包含演算子は、入力オブジェクト(test-object)がコレクションである場合に参照の等式を使用します。
例 01
$leftsideobj = "Hello", "NewString1"
ここでは、$leftsideobj
変数を要素のセット(コレクション)に割り当てます。
$leftsideobj, "AnotherString" -contains $leftsideobj
次に、-contains
演算子を使用して一致するものを見つけます。
出力:
True
このコマンドは True
と評価されています。入力コレクションは $leftsideobj
であり、同じインスタンスが左側のコレクションで使用できるためです。これは、参照の同等性が満たされていることを意味します。したがって、結果は True
になります。
例 02
$newleftsideobj = "Hello", "Test"
ここでは、"Hello"
要素と"Test"
要素を含むコレクションに割り当てられた $newleftsideobj
変数を取得しました。
`"Hello", "Test", "NewString1" -contains $newleftsideobj`
出力:
False
上記のコマンドは False
と評価されました。入力コレクション(右側)が $newleftsideobj
であることがわかります。これは、間接的に 2つの要素"Hello"
と"Test"
です。左側に気付いた場合は、"Hello"
要素と"Test"
要素を使用できます。しかし、それは参照の等式を満たしていません。そのため、出力は False
になります。
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.