PowerShell 包含運算符

PowerShell 包含運算符

在 PowerShell 中,有不同的運算子可以過濾/比較或查找匹配指定輸入字符串的元素。-contains 是主要的比較運算子之一,歸類為包含類型的運算子。

有四個主要的包含類型運算子。

  • -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 運算子的一個最大優勢是它可以用來查找給定集合/集是否匹配輸入集合。重要的是要記住,運算子檢查左側(給定集合)和右側(輸入集合/測試集合)是否存在相同的實例。這意味著這些包含運算子在輸入對象(測試對象)為集合時使用參考相等性。

範例 01

$leftsideobj = "Hello", "NewString1"

在這裡,我們將 $leftsideobj 變數分配給元素集(集合)。

$leftsideobj, "AnotherString" -contains $leftsideobj

然後,我們使用 -contains 運算子來查找匹配。

輸出:

True

此命令已被評估為 True。因為輸入集合是 $leftsideobj,並且在左側集合中存在相同的實例。這意味著參考相等性已被滿足。因此,結果是 True

範例 02

$newleftsideobj = "Hello", "Test"

在這裡,我們將 $newleftsideobj 變數分配給包含 "Hello""Test" 元素的集合。

`"Hello", "Test", "NewString1" -contains $newleftsideobj`

輸出:

False

上述命令被評估為 False。你可以看到輸入集合(右側)是 $newleftsideobj,它間接包含了兩個元素 "Hello""Test"。如果你注意到左側,我們有 "Hello""Test" 元素可用。但是它不滿足參考相等性。因此輸出是 False

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. 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