Búsqueda de sitios web

Cómo comprobar si una cadena contiene varios valores en PowerShell


Mientras trabajaba en un script de PowerShell, se me pidió que verificara si una cadena contiene varios valores. Probé diferentes métodos y en este tutorial te mostraré cómo hacerlo con scripts completos y ejemplos.

Para comprobar si una cadena contiene varios valores en PowerShell, puede utilizar el operador -match con una expresión regular. Le permite buscar múltiples patrones en una sola línea (por ejemplo, $string -match “quick|lazy|fox”).

Ahora, verifiquemos todos los métodos.

Método 1: uso del operador -match con expresiones regulares

En PowerShell, puede utilizar el operador -match con expresiones regulares para comprobar si una cadena contiene alguna de varias subcadenas.

Aquí hay un script de PowerShell completo.

$string = "The quick brown fox jumps over the lazy dog"
$patterns = "quick|lazy|fox"

if ($string -match $patterns) {
    Write-Output "The string contains one of the specified values."
} else {
    Write-Output "The string does not contain any of the specified values."
}

En este ejemplo, el operador -match comprueba si $string contiene alguna de las palabras "quick", "lazy" o "fox". El carácter de barra vertical (|) en el patrón actúa como un operador OR.

Mire la captura de pantalla a continuación después de ejecutar el script de PowerShell usando el código VS.

Lea ¿Cómo dividir cadenas mediante nuevas líneas en PowerShell?

Método 2: usar el método Contiene() en un bucle

Aquí hay otro método para verificar si una cadena contiene múltiples valores en PowerShell. Puede utilizar el método Contiene() en un bucle para comprobar cada subcadena individualmente.

Aquí tienes un ejemplo completo.

$string = "The quick brown fox jumps over the lazy dog"
$substrings = @("quick", "lazy", "fox")
$contains = $false

foreach ($substring in $substrings) {
    if ($string.Contains($substring)) {
        $contains = $true
        break
    }
}

if ($contains) {
    Write-Output "The string contains one of the specified values."
} else {
    Write-Output "The string does not contain any of the specified values."
}

Aquí, recorremos cada subcadena en la matriz $substrings y usamos el método Contains para verificar si existe en $string. Si se encuentra alguna subcadena, el bucle se interrumpe antes de tiempo para mayor eficiencia.

Método 3: uso del cmdlet Select-String

El cmdlet PowerShell Select-String es otro enfoque que puede buscar patrones dentro de cadenas.

Aquí hay un ejemplo.

$string = "The quick brown fox jumps over the lazy dog"
$patterns = "quick|lazy|fox"

if ($string | Select-String -Pattern $patterns) {
    Write-Output "The string contains one of the specified values."
} else {
    Write-Output "The string does not contain any of the specified values."
}

En este ejemplo, Select-String se utiliza para buscar patrones dentro de $string. Este cmdlet es particularmente útil cuando se trabaja con grandes bloques de texto o archivos.

Leer Dividir una cadena en variables en PowerShell

Método 4: usar el operador -contiene con matrices

En PowerShell, también puede usar el operador -contains para verificar si hay alguna subcadena presente en la cadena al convertir la cadena en una matriz de subcadenas.

Aquí hay un script de PowerShell completo.

$string = "The quick brown fox jumps over the lazy dog"
$substrings = @("quick", "lazy", "fox")
$stringArray = $string.Split(" ")

if ($substrings | ForEach-Object { $stringArray -contains $_ }) {
    Write-Output "The string contains one of the specified values."
} else {
    Write-Output "The string does not contain any of the specified values."
}

Aquí, dividimos la cadena en una matriz de palabras y luego verificamos si alguna de las subcadenas especificadas está presente en esta matriz usando el operador -contains.

Conclusión

En este tutorial de PowerShell, expliqué cómo verificar si una cadena contiene múltiples valores usando varios métodos como:

  • Usando el operador -match con expresiones regulares
  • Usando el método Contiene() en un bucle
  • Uso del cmdlet Seleccionar cadena
  • Usando el operador -contiene con matrices

Artículos relacionados