How to compare the contents of two string objects in PowerShell

PowershellString Comparison

Powershell Problem Overview


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?

Powershell Solutions


Solution 1 - Powershell

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

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

Solution 2 - Powershell

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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionhax0r_n_codeView Question on Stackoverflow
Solution 1 - PowershellmanojldsView Answer on Stackoverflow
Solution 2 - PowershellalrocView Answer on Stackoverflow