PowerShell コンテインズ演算子

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 です。

チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe
Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

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.

関連記事 - PowerShell Operator