PowerShell contains l'opérateur
Il existe différents opérateurs disponibles dans le PowerShell qui peuvent filtrer/comparer ou rechercher des éléments qui correspondent à une chaîne d’entrée spécifiée. Le -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 confinement.
-contains
-notcontains
-in
-notin
Dans cet article, nous nous concentrons uniquement sur l’opérateur -contains
. Cet opérateur renvoie toujours une valeur booléenne (vrai/faux) en cas de correspondance. De plus, l’opérateur -contains
en termes de performances est assez rapide pour renvoyer les résultats car il arrête de comparer l’entrée 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 comme ci-dessous.
[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"
Production :
True
L’élément/la valeur d’entrée est "2ndLane"
et il peut être situé dans la collection/l’ensemble de gauche. Par conséquent, la sortie/résultat est évidemment True
.
- Exemple 02 :
"Hello", "FOX", "2ndLane" -contains "NotInTheCollection"
Production :
False
L’élément/la 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 à propos de l’opérateur -contains
est qu’il vérifie l’élément d’entrée exact dans la collection/l’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"
Production :
False
Dans l’exemple ci-dessus, l’élément d’entrée est le "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 prévu.
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 déterminer si la collection/l’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/test-collection). Cela signifie que ces opérateurs de confinement utilisent l’égalité des références lorsque l’objet d’entrée (test-object) est une collection.
Exemple 01
$leftsideobj = "Hello", "NewString1"
Ici, nous affectons la variable $leftsideobj
à l’ensemble des éléments (collection).
$leftsideobj, "AnotherString" -contains $leftsideobj
Ensuite, nous utilisons l’opérateur -contains pour trouver une correspondance.
Production :
True
Cette commande a été évaluée à True
. Parce que la collection d’entrée est $leftsideobj
et que la même instance est disponible dans la collection de gauche. Cela signifie que l’égalité de référence a été remplie. Par conséquent, le résultat est True
.
Exemple 02
$newleftsideobj = "Hello", "Test"
Ici, nous avons la variable $newleftsideobj
assignée à une collection qui contient les éléments "Hello"
et "Test"
.
`"Hello", "Test", "NewString1" -contains $newleftsideobj`
Production :
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 les deux éléments "Hello"
et "Test"
. Si vous remarquez le côté gauche, nous avons des é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.