Operador Contains de PowerShell

Hay diferentes operadores disponibles en PowerShell que pueden filtrar/comparar o encontrar elementos que coincidan con una cadena de entrada especificada. El -contains
es uno de los principales operadores de comparación, clasificado como un operador de tipo Contención.
Hay cuatro operadores de tipo contención principales.
-contains
-notcontains
-in
-notin
En este artículo, nos enfocaremos únicamente en el operador -contains
. Este operador siempre devuelve un valor booleano (verdadero/falso) si hay una coincidencia. Además, en términos de rendimiento, el operador -contains
es bastante rápido en devolver los resultados porque deja de comparar la entrada tan pronto como encuentra la primera coincidencia.
el operador -contains
en PowerShell
Este operador puede usarse para verificar si una colección contiene un elemento específico. Su sintaxis es la siguiente.
[set / collection] -contains [test-value or test-object]
[set/collection]
puede ser un conjunto de valores de cadena (separados por comas), por ejemplo, "Hola"
o "ZORRO", "2daCalle"
.
[test-value or test-object]
puede ser un elemento o conjunto de elementos (colección), por ejemplo, "Hola"
o "Hola", "ZORRO", "No2"
.
Verificar un Elemento Cierto
- Ejemplo 01:
"Hello", "FOX", "2ndLane" -contains "2ndLane"
Salida:
True
El elemento/valor de entrada es "2daCalle"
y se puede ubicar en la colección/conjunto del lado izquierdo. Por lo tanto, la salida/resultado es obviamente True
.
- Ejemplo 02:
"Hello", "FOX", "2ndLane" -contains "NotInTheCollection"
Salida:
False
El elemento/valor de entrada es "NoEnLaColección"
y no está incluido en la colección del lado derecho. Por lo tanto, el comando anterior se evaluó como False
.
El hecho importante sobre el operador -contains
es que verifica el elemento de entrada exacto dentro de la coleccion/conjunto dado. El comando se evaluará como False
cuando se haya dado una porción/subcadena como el elemento de entrada.
- Ejemplo 03:
"Hello", "FOX", "FullStringGiven" -contains "StringGiven"
Salida:
False
En el ejemplo anterior, el elemento de entrada es "CadenaDada"
, pero es una subcadena del elemento "CadenaCompletaDada"
de la colección del lado derecho. Por lo tanto, el elemento de entrada no coincide con un elemento exacto de la colección del lado derecho, y el resultado es False
, como se esperaba.
Verificar un Conjunto de Elementos/Colección Con el Operador -contains
en PowerShell
Una de las mayores ventajas del operador -contains
es que se puede usar para encontrar si la colección/conjunto dado coincide con una colección de entrada. Es importante tener en cuenta que el operador verifica si las mismas instancias existen en el lado izquierdo (colección dada) y en el lado derecho (colección de entrada/colección de prueba). Eso significa que estos operadores de contención utilizan igualdad de referencia cuando el objeto de entrada (objeto de prueba) es una colección.
Ejemplo 01
$leftsideobj = "Hello", "NewString1"
Aquí, asignamos la variable $leftsideobj
al conjunto de elementos (colección).
$leftsideobj, "AnotherString" -contains $leftsideobj
Luego, usamos el operador -contains para encontrar una coincidencia.
Salida:
True
Este comando se ha evaluado como True
. Porque la colección de entrada es $leftsideobj
y la misma instancia está disponible en la colección del lado izquierdo. Esto significa que se ha cumplido la igualdad de referencia. Por lo tanto, el resultado es True
.
Ejemplo 02
$newleftsideobj = "Hello", "Test"
Aquí, tenemos la variable $newleftsideobj
asignada a una colección que contiene los elementos "Hola"
y "Prueba"
.
`"Hello", "Test", "NewString1" -contains $newleftsideobj`
Salida:
False
El comando anterior se evaluó como False
. Puedes ver que la colección de entrada (lado derecho) es $newleftsideobj
, que indirectamente contiene los dos elementos "Hola"
y "Prueba"
. Si notas el lado izquierdo, tenemos disponibles los elementos "Hola"
y "Prueba"
. Pero no satisface la igualdad de referencia. Por eso la salida es 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.