web-dev-qa-db-fra.com

Comment comparer le contenu de deux objets chaîne dans PowerShell

Dans PowerShell, j'ai un tableau d'objets chaîne et un objet contenant des objets chaîne. Dans Java vous pouvez effectuer une .equals(aObject)] pour vérifier si les valeurs de chaîne correspondent, alors que vous effectuez un test == Si les deux objets font référence au même emplacement dans Mémoire.

Comment puis-je exécuter un équivalent .equals(aObject) dans Powershell?

Je fais ça:

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

Ces deux ont exactement les mêmes valeurs de chaîne, mais j'obtiens une valeur de retour de false. Aucune suggestion?

37
hax0r_n_code

Vous voulez faire $arrayOfString[0].Title -eq $myPbiject.item(0).Title

-match est utilisé pour la correspondance de regex (le deuxième argument est une regex)

59
manojlds

Vous pouvez le faire de deux manières différentes.

Option 1: l'opérateur -eq

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

Option 2: La méthode .Equals() de l'objet string. Comme les chaînes dans PowerShell sont des objets .Net System.String, Toute méthode de cet objet peut être appelée directement.

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

La liste des méthodes System.String Suit.

40
alroc