Búsqueda de sitios web

¿Cómo comprobar si existe una cadena en una matriz en PowerShell?


Recientemente, recibí la tarea de verificar si existe una cadena específica dentro de una matriz de PowerShell. En este tutorial de PowerShell, explicaré varios métodos para comprobar si una cadena es miembro de una matriz en PowerShell.

En PowerShell, para comprobar si existe una cadena en una matriz, puede utilizar el operador -contains . Por ejemplo, si $array es tu matriz y $string es la cadena que estás buscando, escribirías la condición $array -contains $string. Esto devolverá $true si la cadena se encuentra en la matriz, y $false en caso contrario

Cómo comprobar si existe una cadena en una matriz en PowerShell

En PowerShell, puede crear una matriz asignando varios valores a una variable, separados por comas.

$array = "apple", "banana", "cherry"

Ahora veamos diferentes formas de verificar si existe una cadena en esta matriz en PowerShell usando diferentes métodos.

Método 1: uso del operador -contiene

El operador -contains es el método más sencillo para comprobar la presencia de una cadena en una matriz en PowerShell. Devuelve $true si la matriz contiene el valor especificado; de lo contrario, devuelve $false.

Aquí hay un ejemplo completo de "PowerShell: comprobar si existe una cadena en una matriz".

$array = "apple", "banana", "cherry"
$stringToCheck = "banana"
$result = $array -contains $stringToCheck
Write-Host "Does the array contain the string? $result"

Aquí puede ver que ejecuté el script de PowerShell usando el código de Visual Studio, el resultado es como en la siguiente captura de pantalla:

Método 2: usar el método .Contains()

El método .Contains() en PowerShell es otra forma de comprobar la existencia de un elemento en una matriz. Es un método que proviene del marco .NET subyacente y funciona de manera similar al operador -contains.

Aquí está el script completo de PowerShell.

$array = "apple", "banana", "cherry"
$stringToCheck = "banana"
$result = $array.Contains($stringToCheck)
Write-Host "Does the array contain the string? $result"

Una vez que ejecute el script de PowerShell, podrá ver el resultado en la siguiente captura de pantalla.

Método 3: usar el operador -in

El operador -in es como el reverso del operador -contains en PowerShell. En lugar de $array -contains $stringToCheck, escribe $stringToCheck -in $array. Devuelve $true si la cadena está en la matriz y $false en caso contrario.

Aquí está el script completo para verificar si existe una cadena en una matriz en PowerShell.

$array = "apple", "banana", "cherry"
$stringToCheck = "banana"
$result = $stringToCheck -in $array
Write-Host "Is the string in the array? $result"

Método 4: usar ForEach-Object con el operador -match

Si desea realizar una verificación más compleja, como una búsqueda que no distinga entre mayúsculas y minúsculas o una coincidencia parcial, puede usar ForEach-Object con el operador -match en PowerShell.

Aquí está el script completo de PowerShell.

$array = "apple", "banana", "cherry"
$stringToCheck = "Ban"
$result = $array | ForEach-Object { $_ -match $stringToCheck }
$result = $result -contains $true
Write-Host "Does the array contain the string (case-insensitive)? $result"

En este ejemplo, -match se utiliza para una coincidencia parcial que no distingue entre mayúsculas y minúsculas y devolverá $true porque "banana" contiene "Ban".

Método 5: uso de funciones personalizadas

Es posible que desee definir una función personalizada para escenarios más complejos o comprobaciones repetidas. Aquí está el script completo para comprobar si existe una cadena en una matriz de PowerShell.

function Test-StringInArray {
    param(
        [string[]]$array,
        [string]$stringToCheck
    )
    return $array -contains $stringToCheck
}

$array = "apple", "banana", "cherry"
$stringToCheck = "banana"
$result = Test-StringInArray -array $array -stringToCheck $stringToCheck
Write-Host "Does the array contain the string? $result"

Esta función encapsula la lógica para verificar si existe una cadena en una matriz, lo que hace que sus scripts sean más limpios y reutilizables.

Aquí está el resultado en la siguiente captura de pantalla, después de ejecutarlo usando el código VS.

Conclusión

Comprobar si existe una cadena en una matriz es una tarea común en las secuencias de comandos de PowerShell. Hemos explorado varios métodos para lograr esto, desde operadores simples como -contains y el método .Contains() hasta enfoques más complejos con funciones personalizadas y coincidencias parciales.

En este tutorial de PowerShell, he explicado cómo comprobar si una cadena existe en una matriz en PowerShell usando varios métodos y ejemplos reales.

Artículos relacionados