Opérateur Contains de PowerShell

Il existe différents opérateurs disponibles dans PowerShell qui peuvent filtrer/comparer ou trouver des éléments correspondant à une chaîne d’entrée spécifiée. L’opérateur -contains
est l’un des principaux opérateurs de comparaison, classé comme un opérateur de type Containment.
Il existe quatre principaux opérateurs de type Containment.
-contains
-notcontains
-in
-notin
Dans cet article, nous ne nous concentrons que sur l’opérateur -contains
. Cet opérateur renvoie toujours une valeur booléenne (vrai/faux) s’il y a une correspondance. De plus, du point de vue des performances, l’opérateur -contains
est assez rapide pour renvoyer les résultats car il arrête la comparaison dès qu’il trouve la première correspondance.
l’opérateur -contains
dans PowerShell
Cet opérateur peut être utilisé pour vérifier si une collection contient un élément spécifique. Sa syntaxe est la suivante.
[set / collection] -contains [test-value or test-object]
[set/collection]
peut être un ensemble de valeurs de chaîne (séparées par des virgules), par exemple, "Hello"
ou "FOX", "2ndLane"
.
[test-value or test-object]
peut être un élément ou un ensemble d’éléments (collection), par exemple, "Hello"
ou "Hello", "FOX", "No2"
.
Vérifier un Certain Élément
- Exemple 01 :
"Hello", "FOX", "2ndLane" -contains "2ndLane"
Sortie :
True
L’élément/valeur d’entrée est "2ndLane"
et il peut être localisé dans la collection/ensemble de gauche. Par conséquent, la sortie/résultat est évidemment True
.
- Exemple 02 :
"Hello", "FOX", "2ndLane" -contains "NotInTheCollection"
Sortie :
False
L’élément/valeur d’entrée est "NotInTheCollection"
et il n’est pas inclus dans la collection de droite. Par conséquent, la commande ci-dessus a été évaluée à False
.
Le fait important concernant l’opérateur -contains
est qu’il vérifie l’élément d’entrée exact dans la collection/ensemble donné. La commande sera évaluée comme False
lorsqu’une portion/sous-chaîne a été donnée comme élément d’entrée.
- Exemple 03 :
"Hello", "FOX", "FullStringGiven" -contains "StringGiven"
Sortie :
False
Dans l’exemple ci-dessus, l’élément d’entrée est la "StringGiven"
, mais c’est une sous-chaîne de l’élément "FullStringGiven"
de la collection de droite. Par conséquent, l’élément d’entrée ne correspond pas à un élément exact de la collection de droite, et le résultat est False
comme attendu.
Vérifier un Ensemble d’Éléments/Collection Avec l’Opérateur -contains
dans PowerShell
L’un des plus grands avantages de l’opérateur -contains
est qu’il peut être utilisé pour trouver si la collection/ensemble donné correspond à une collection d’entrée. Il est important de garder à l’esprit que l’opérateur vérifie si les mêmes instances existent du côté gauche (collection donnée) et du côté droit (collection d’entrée/collection de test). Cela signifie que ces opérateurs de containment utilisent l’égalité de référence lorsque l’objet d’entrée (objet de test) est une collection.
Exemple 01
$leftsideobj = "Hello", "NewString1"
Ici, nous assignons la variable $leftsideobj
à l’ensemble d’éléments (collection).
$leftsideobj, "AnotherString" -contains $leftsideobj
Ensuite, nous utilisons l’opérateur -contains pour trouver une correspondance.
Sortie :
True
Cette commande a été évaluée à True
. Car la collection d’entrée est $leftsideobj
et la même instance est disponible dans la collection de gauche. Cela signifie que l’égalité de référence a été satisfaite. Par conséquent, le résultat est True
.
Exemple 02
$newleftsideobj = "Hello", "Test"
Ici, nous avons la variable $newleftsideobj
assignée à une collection contenant les éléments "Hello"
et "Test"
.
`"Hello", "Test", "NewString1" -contains $newleftsideobj`
Sortie :
False
La commande ci-dessus a été évaluée à False
. Vous pouvez voir que la collection d’entrée (côté droit) est $newleftsideobj
, qui indirectement contient les deux éléments "Hello"
et "Test"
. Si vous remarquez le côté gauche, nous avons les éléments "Hello"
et "Test"
disponibles. Mais cela ne satisfait pas l’égalité de référence. C’est pourquoi la sortie est False
.
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.