Operatore Contains di PowerShell

Ci sono diversi operatori disponibili in PowerShell che possono filtrare/confrontare o trovare elementi che corrispondono a una stringa di input specificata. L’operatore -contains
è uno dei principali operatori di confronto, classificato come operatore di tipo Contenimento.
Ci sono quattro principali operatori di tipo contenimento.
-contains
-notcontains
-in
-notin
In questo articolo, ci concentreremo solo sull’operatore -contains
. Questo operatore restituisce sempre un valore booleano (vero/falso) se c’è una corrispondenza. Inoltre, dal punto di vista delle prestazioni, l’operatore -contains
è piuttosto veloce nel restituire i risultati perché smette di confrontare l’input non appena trova la prima corrispondenza.
l’operatore -contains
in PowerShell
Questo operatore può essere utilizzato per controllare se una collezione contiene un elemento specifico. La sua sintassi è come segue.
[set / collection] -contains [test-value or test-object]
[set/collection]
può essere un insieme di valori stringa (separati da virgola), ad esempio, "Hello"
o "FOX", "2ndLane"
.
[test-value or test-object]
può essere un elemento o un insieme di elementi (collezione), ad esempio, "Hello"
o "Hello", "FOX", "No2"
.
Controllare un Elemento Specifico
- Esempio 01:
"Hello", "FOX", "2ndLane" -contains "2ndLane"
Output:
True
L’elemento/valore di input è "2ndLane"
e può essere trovato nella collezione/set a sinistra. Pertanto, l’output/risultato è ovviamente True
.
- Esempio 02:
"Hello", "FOX", "2ndLane" -contains "NotInTheCollection"
Output:
False
L’elemento/valore di input è "NotInTheCollection"
e non è incluso nella collezione a destra. Pertanto, il comando sopra è stato valutato come False
.
Il fatto importante riguardo all’operatore -contains
è che controlla l’elemento di input esatto all’interno della collezione/set dato. Il comando sarà valutato come False
quando viene fornita una porzione/sottostringa come elemento di input.
- Esempio 03:
"Hello", "FOX", "FullStringGiven" -contains "StringGiven"
Output:
False
Nell’esempio sopra, l’elemento di input è lo "StringGiven"
, ma è una sottostringa dell’elemento "FullStringGiven"
della collezione a destra. Pertanto, l’elemento di input non corrisponde a un elemento esatto della collezione a destra e il risultato è False
come previsto.
Controllare un Set di Elementi/Collezione con l’Operatore -contains
in PowerShell
Uno dei principali vantaggi dell’operatore -contains
è che può essere utilizzato per trovare se la collezione/set fornito corrisponde a una collezione di input. È importante tenere a mente che l’operatore controlla se le stesse istanze esistono a sinistra (collezione fornita) e a destra (collezione di input/collezione di test). Ciò significa che questi operatori di contenimento utilizzano l’uguaglianza di riferimento quando l’oggetto di input (test-object) è una collezione.
Esempio 01
$leftsideobj = "Hello", "NewString1"
Qui, assegniamo la variabile $leftsideobj
all’insieme di elementi (collezione).
$leftsideobj, "AnotherString" -contains $leftsideobj
Poi, utilizziamo l’operatore -contains per trovare una corrispondenza.
Output:
True
Questo comando è stato valutato come True
. Perché la collezione di input è $leftsideobj
e la stessa istanza è disponibile nella collezione a sinistra. Significa che l’uguaglianza di riferimento è stata soddisfatta. Pertanto, il risultato è True
.
Esempio 02
$newleftsideobj = "Hello", "Test"
Qui, abbiamo la variabile $newleftsideobj
assegnata a una collezione che contiene gli elementi "Hello"
e "Test"
.
`"Hello", "Test", "NewString1" -contains $newleftsideobj`
Output:
False
Il comando sopra è stato valutato come False
. Puoi vedere che la collezione di input (a destra) è $newleftsideobj
, che indirettamente rappresenta i due elementi "Hello"
e "Test"
. Se noti a sinistra, abbiamo gli elementi "Hello"
e "Test"
disponibili. Ma non soddisfa l’uguaglianza di riferimento. Ecco perché l’output è 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.