在Powershell脚本中-contains与.contains有什么区别?

时间:2019-05-16 10:15:02

标签: powershell

.contains和-contains有什么区别?一个似乎区分大小写,而另一个则不然。

PS C:\WINDOWS\system32> ("jack", "john", "jill").contains("Jill")
False


PS C:\WINDOWS\system32> "jack", "john", "jill" -contains "Jill"
True

为什么会有这样的差异?

2 个答案:

答案 0 :(得分:3)

-Contains运算符将一个对象与一个集合进行比较。如果整个值作为一个项目存在于集合中,则返回true。它不区分大小写,并且不限于字符串。 -CContains是区分大小写的版本。 .Contains()方法是String类中的.NET方法。它将子字符串与字符串进行比较(默认情况下区分大小写)。

如果将数组转换为字符串,因为jill将是较大字符串中的子字符串,因此可以操纵您的第一个示例以获得所需的结果。

("jack","jill","john" -join ",").Contains("jill")
True

有关使用-Contains的详细信息和示例,请参见About_Comparison_Operators。 有关.Contains方法的说明,请参见String.Contains Method

答案 1 :(得分:0)

两者实际上有很大的不同。

$str = "abcde"

$str -contains "abcd" 
False

$str.Contains("abcd") 
True

为什么会有这种区别?

因为

  

-包含是根据MS的遏制运算符。告诉   是否收集参考         值包括一个测试值。始终返回布尔值。返回TRUE         仅当测试值与至少一个参考值完全匹配时,它必须是 include 元素之一(包含)   在数组中不是字符串元素的子字符串

     

Contains()方法是支持字符串对象的方法之一   子字符串,因此为什么在运行时得到True   $str.Contains("abcd")

希望有帮助。