PowerShell 包含運算子

Migel Hewage Nimesha 2022年5月16日
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

在 PowerShell 中使用 -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 的原因。

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