如何在PowerShell中比较两个字符串对象的内容

hax*_*ode 38 powershell string-comparison

在PowerShell中我有一个字符串对象数组,我有一个包含字符串对象的对象.在Java中,您可以执行a .equals(aObject)来测试字符串值是否匹配,而==如果两个对象引用内存中的相同位置则执行测试.

如何.equals(aObject)在powershell中运行等效项?

我这样做:

$arrayOfStrings[0].Title -matches $myObject.item(0).Title
Run Code Online (Sandbox Code Playgroud)

这两个都具有完全相同的字符串值,但我得到返回值false.有什么建议?

man*_*lds 61

你想做 $arrayOfString[0].Title -eq $myPbiject.item(0).Title

-match 用于正则表达式匹配(第二个参数是正则表达式)

  • 转换为字符串对我来说效果最好:`$a = cat ./text.txt` `$b = cat ./text2.txt` `[string]$a -eq [string]$b` 返回 false,因为文件是不同的 (2认同)

alr*_*roc 43

你可以用两种不同的方式做到这一点.

选项1:-eq运营商

>$a = "is"
>$b = "fission"
>$c = "is"
>$a -eq $c
True
>$a -eq $b
False
Run Code Online (Sandbox Code Playgroud)

选项2:对象的.Equals()方法string.因为PowerShell中的字符串是.Net System.String对象,所以可以直接调用该对象的任何方法.

>$a.equals($b)
False
>$a.equals($c)
True
>$a|get-member -membertype method
Run Code Online (Sandbox Code Playgroud)

System.String方法列表如下.