Búsqueda de sitios web

Cómo comprobar si una cadena contiene una subcadena en PowerShell


Recientemente, uno de mis clientes me pidió que verificara si una cadena contiene una subcadena. Probé varios métodos en PowerShell. En este tutorial, explicaré cómo comprobar si una cadena contiene una subcadena en PowerShell usando varios métodos con ejemplos.

Para comprobar si una cadena contiene una subcadena en PowerShell, puede utilizar el operador -like con comodines (*substring*). También puede utilizar el método Contains() ($string.Contains($substring)) para realizar comprobaciones que distingan entre mayúsculas y minúsculas. Por último, usar el cmdlet Select-String o el método IndexOf ($string.IndexOf($substring) -ne -1) también puede lograr esto.

Método 1: usar el operador -like

En PowerShell, podemos usar el operador -like para comprobar si una cadena contiene una subcadena. Utiliza caracteres comodín para hacer coincidir patrones.

Aquí hay un script de PowerShell completo.

$string = "Hello, PowerShell World!"
$substring = "PowerShell"

if ($string -like "*$substring*") {
    Write-Output "The string contains the substring."
} else {
    Write-Output "The string does not contain the substring."
}

En este ejemplo, el carácter comodín * representa cualquier secuencia de caracteres, por lo que *PowerShell* coincide con cualquier cadena que contenga "PowerShell".

Ejecuté el script anterior y puedes ver el resultado en la siguiente captura de pantalla:

Lea la comparación de cadenas que no distinguen entre mayúsculas y minúsculas en PowerShell

Método 2: uso del operador -match

Aquí hay otro método para verificar si una cadena contiene una subcadena en Powershell. Puede utilizar el operador -match con expresiones regulares para realizar coincidencias de patrones. Aquí hay otro ejemplo.

$string = "Hello, PowerShell World!"
$pattern = "PowerShell"

if ($string -match $pattern) {
    Write-Output "The string contains the substring."
} else {
    Write-Output "The string does not contain the substring."
}

Aquí, el operador -match comprueba si $string coincide con el patrón de expresión regular almacenado en $pattern.

Puede consultar la captura de pantalla a continuación para ver el resultado después de ejecutar el script usando el código VS.

Método 3: utilizar el método Contiene

El método Contains() es otra forma de comprobar si existe una subcadena dentro de una cadena en PowerShell. Este método distingue entre mayúsculas y minúsculas.

Aquí está el script completo de PowerShell.

$string = "Hello, PowerShell World!"
$substring = "PowerShell"

if ($string.Contains($substring)) {
    Write-Output "The string contains the substring."
} else {
    Write-Output "The string does not contain the substring."
}

En este ejemplo, el método Contains devuelve True si $substring se encuentra dentro de $string; de lo contrario, devuelve Falso.

Leer Comparar cadenas en PowerShell

Método 4: uso del cmdlet Select-String

El cmdlet Select-String es similar al comando grep de Unix y se utiliza para buscar patrones de texto en cadenas y archivos. Es particularmente útil para buscar en registros o archivos de texto grandes.

Aquí hay un ejemplo.

$string = "Hello, PowerShell World!"
$substring = "PowerShell"

if ($string | Select-String -Pattern $substring) {
    Write-Output "The string contains the substring."
} else {
    Write-Output "The string does not contain the substring."
}

Aquí, Select-String busca el patrón especificado por $substring dentro de $string y devuelve un objeto coincidente si lo encuentra.

Método 5: uso del método IndexOf()

El método IndexOf() devuelve el índice de base cero de la primera aparición de una subcadena dentro de una cadena en PowerShell. Si no se encuentra la subcadena, devuelve -1.

Aquí hay otro ejemplo.

$string = "Hello, PowerShell World!"
$substring = "PowerShell"

if ($string.IndexOf($substring) -ne -1) {
    Write-Output "The string contains the substring."
} else {
    Write-Output "The string does not contain the substring."
}

En este ejemplo, IndexOf comprueba si $substring existe en $string devolviendo su índice inicial o -1 si extraviado.

Puede ver el resultado en la captura de pantalla siguiente.

Conclusión

PowerShell proporciona varias formas de comprobar si una cadena contiene una subcadena; puede usar el operador -like, expresiones regulares con el operador -match , el método Contiene() , usando el cmdlet Select-String o el IndexOf() método, etc.

Artículos relacionados