当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何使用 PowerShell 字符串包含

作者:精品下载站 日期:2024-12-14 03:43:10 浏览:16 分类:玩电脑

如何使用 PowerShell 字符串包含


PowerShell 中的 Contains 运算符有点奇怪。您可能想检查字符串是否包含特定单词或字符。 -contains 运算符听起来是最符合逻辑的操作符,但真的是这样吗?

在 PowerShell 中,包含运算符不进行子字符串比较。但相反,它是一个集合运算符。这意味着它将测试集合是否包含匹配值。它不能用于查找字符串内的字符或子字符串。更好的解决方案是使用 -like 运算符或 .contains() 函数

在本文中,我将解释如何检查字符串是否包含字符,并解释不同运算符之间的差异。

PowerShell 字符串包含

当您想测试字符串是否包含单词时,您可能会尝试使用 -contains 运算符,如下所示:

$string = "how to find a word"

if ($string -contains "find") { 
  # Do something
}

# Result
False

但正如您可能已经注意到的那样,这不会起作用。这是因为 -contains 将检查 $string 对象是否与测试元素匹配。如果您在完整的字符串上测试它, contains 将返回 true:

$string -contains "how to find a word"  # True

因此,当您想使用 PowerShell 搜索字符串中的子字符串或单词时,最好使用 -like 运算符。使用 -like 时,您需要在搜索字符串周围使用通配符:

if ($string -like "*find*") { 
  Write-host "String contains find"
}

# Result
String contains find

然而,有一种方法可以在 PowerShell 中使用 contains 来查找字符串中的单词或字符。我们可以使用内置的 .NET 函数 .Contains() 来代替运算符来处理字符串。这个字符串函数实际上可以检查字符串是否包含单词:

if ($string.Contains("find")) { 
  Write-host "String contains find"
}

# Result
String contains find

请记住,Contains 函数区分大小写,因此要进行不区分大小写的比较,您首先需要将字符串转换为小写:

if ($string.ToLower().Contains("find")) { 
  Write-host "String contains find"
}

在对象和数组上使用 -Contains 和 -Notcontains

contains 运算符旨在测试对象或数组是否包含给定值。例如,如果我们有一个包含水果的数组,我们可以检查该数组是否包含梨:

# Array with fruits
$fruits = "apple","banana","pear"

# Check if the array contains pear
$fruits -contains "pear"

# Return
True

我们只能搜索整个值,这意味着我们不能像 Like 运算符一样使用通配符。如果我们尝试仅搜索 apple 的前几个字母,您将看到它返回 false:

$fruits -contains "*app*"
# Result
False

如果您想检查集合是否不包含元素,可以使用 -notcontains 运算符。例如,如果您想确保水果数组不包含覆盆子,我们可以执行以下操作:

$fruits -notcontains "raspberry"

# Returns
True

-in 和 -notin 运算符

PowerShell 中的 -in-notin 运算符与 -contains -notcontains 运算符基本相同。不同之处在于它们只是以相反的方式工作。使用-包含时,测试对象位于操作符的右侧。使用 -in 时,它位于左侧:

$fruits = "apple","banana","pear"

"apple" -in $fruits			# True
"raspberry -notin $fruits		# True

# Similar to
$fruits -contains "apple"		# True
$fruits -notcontains "raspberry         # True

使用 in 运算符代替 contains 可以提高代码的可读性。但除此之外,使用它与遏制相比并没有什么优势。

总结

如果您想在 PowerShell 中知道字符串是否包含特定字符串或单词,则需要使用 -like 运算符或 .contains() 函数。 contains 运算符只能用于对象或数组,就像其语法对应项 -in-notin 一样。

我希望本文有助于理解不同运算符和函数之间的差异。在此完整指南中了解有关 PowerShell 脚本编写的更多信息。如果您有任何问题或提示,请在下面发表评论。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯