How to compare the contents of two string objects in PowerShell

51

In PowerShell I have an array of string objects, and I have an object that contains string objects. In Java you can do a .equals(aObject) to test if the string values match, whereas doing a == test if the two objects refer to the same location in memory.

How do I run an equivalent .equals(aObject) in powershell?

I'm doing this:

$arrayOfStrings[0].Title -matches $myObject.item(0).Title

These both have the exact same string values, but I get a return value of false. Any suggestions?

This question is tagged with powershell string-comparison

~ Asked on 2013-09-12 18:45:24

The Best Answer is


73

You want to do $arrayOfString[0].Title -eq $myPbiject.item(0).Title

-match is for regex matching ( the second argument is a regex )

~ Answered on 2013-09-12 18:47:46


53

You can do it in two different ways.

Option 1: The -eq operator

>$a = "is"
>$b = "fission"
>$c = "is"
>$a -eq $c
True
>$a -eq $b
False

Option 2: The .Equals() method of the string object. Because strings in PowerShell are .Net System.String objects, any method of that object can be called directly.

>$a.equals($b)
False
>$a.equals($c)
True
>$a|get-member -membertype method

List of System.String methods follows.

~ Answered on 2013-09-12 20:04:54


Most Viewed Questions: