PowerShell コンテインズ演算子

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 or 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
です。
-contains
演算子を使用した要素/コレクションのセットを確認する
-contains
演算子の最大の利点の 1つは、指定されたコレクション/セットが入力コレクションに一致するかどうかを見つけるために使用できることです。演算子は、左側(指定されたコレクション)と右側(入力コレクション/テストコレクション)に同じインスタンスが存在するかどうかを確認することに注意することが重要です。これは、入力オブジェクト(テストオブジェクト)がコレクションである場合、これらの含有演算子が参照の等価性を使用することを意味します。
例 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.