¿Cómo comparar cadenas en PowerShell?
Si está trabajando con cadenas en PowerShell, es posible que reciba requisitos para comparar cadenas en PowerShell. En este tutorial de PowerShell, explicaré cómo comparar cadenas en PowerShell usando varios métodos con ejemplos.
Para comparar cadenas en PowerShell, puede utilizar el operador -eq para verificaciones de igualdad que no distinguen entre mayúsculas y minúsculas o -ceq para comparaciones que distinguen entre mayúsculas y minúsculas. El método .Equals() proporciona flexibilidad con opciones como OrdinalIgnoreCase para no distinguir entre mayúsculas y minúsculas. Para la coincidencia de patrones, utilice el operador -like con comodines o -match para expresiones regulares. Además, Compare-Object puede comparar dos conjuntos de cadenas para resaltar las diferencias.
Comparar cadenas en PowerShell
Estos son los múltiples métodos que puede utilizar para comparar cadenas en PowerShell.
1. Usando el operador -eq
El operador PowerShell -eq se utiliza para comprobar si dos cadenas son exactamente iguales. De forma predeterminada, esta comparación no distingue entre mayúsculas y minúsculas.
Ejemplo:
$string1 = "NewYork"
$string2 = "newyork"
if ($string1 -eq $string2) {
Write-Output "The strings are equal."
} else {
Write-Output "The strings are not equal."
}
En este ejemplo, el resultado será "Las cadenas son iguales". porque el operador -eq ignora mayúsculas y minúsculas de forma predeterminada.
La siguiente captura de pantalla muestra el resultado después de ejecutar el script de PowerShell anterior usando código VS.
Para una comparación que distinga entre mayúsculas y minúsculas, puede utilizar el operador -ceq en PowerShell, como en el siguiente ejemplo.
$string1 = "NewYork"
$string2 = "newyork"
if ($string1 -ceq $string2) {
Write-Output "The strings are equal."
} else {
Write-Output "The strings are not equal."
}Aquí, el resultado será "Las cadenas no son iguales". porque -ceq considera el caso de las cadenas.
Aquí puede ver el resultado en la siguiente captura de pantalla:
Leer Convertir variables en cadenas en PowerShell
2. Usando el operador -ne
El operador -ne comprueba si dos cadenas no son iguales en PowerShell. Esto tampoco distingue entre mayúsculas y minúsculas de forma predeterminada.
Ejemplo:
$string1 = "JaneDoe"
$string2 = "JaneSmith"
if ($string1 -ne $string2) {
Write-Output "The strings are not equal."
} else {
Write-Output "The strings are equal."
}
El resultado será "Las cadenas no son iguales". porque JaneDoe es diferente de JaneSmith.
Ejecuté el código anterior y puedes ver el resultado en la siguiente captura de pantalla:
3. Usando el método .Equals()
Aquí hay otro método en PowerShell para comparar cadenas, el método .Equals(). El método .Equals() le permite comparar cadenas especificando la distinción entre mayúsculas y minúsculas.
Ejemplo:
$string1 = "MichaelSmith"
$string2 = "michaelsmith"
if ($string1.Equals($string2, [System.StringComparison]::OrdinalIgnoreCase)) {
Write-Output "The strings are equal."
} else {
Write-Output "The strings are not equal."
}En este ejemplo, el resultado será "Las cadenas son iguales". porque OrdinalIgnoreCase hace que la comparación no distinga entre mayúsculas y minúsculas.
Para una comparación que distinga entre mayúsculas y minúsculas, puede utilizar Ordinal:
if ($string1.Equals($string2, [System.StringComparison]::Ordinal)) {
Write-Output "The strings are equal."
} else {
Write-Output "The strings are not equal."
}Aquí, el resultado será "Las cadenas no son iguales". porque Ordinal impone la distinción entre mayúsculas y minúsculas.
Leer dividir una cadena por palabra en PowerShell
4. Uso del cmdlet Comparar objetos
El cmdlet Compare-Object es útil para comparar dos conjuntos de cadenas y encontrar diferencias en PowerShell.
Ejemplo:
$array1 = @("AliceJohnson", "BobSmith", "CharlieBrown")
$array2 = @("AliceJohnson", "CharlieBrown", "DavidWilliams")
$comparison = Compare-Object -ReferenceObject $array1 -DifferenceObject $array2
foreach ($difference in $comparison) {
Write-Output $difference
}El resultado mostrará las diferencias entre las dos matrices:
InputObject SideIndicator
----------- -------------
BobSmith <=
DavidWilliams =>5. Uso de los operadores -like y -match
También puede utilizar los operadores -like y -match para comparar cadenas en PowerShell.
El operador -like se utiliza para la coincidencia de patrones comodín, mientras que el operador -match utiliza expresiones regulares.
Ejemplo con -like:
$string = "JessicaJones"
if ($string -like "Jessica*") {
Write-Output "The string starts with 'Jessica'."
}El resultado será "La cadena comienza con 'Jessica'". porque -like admite patrones de comodines.
Ejemplo con -match:
$string = "JessicaJones"
if ($string -match "^Jessica") {
Write-Output "The string starts with 'Jessica'."
}El resultado será el mismo que el del ejemplo anterior, pero -match usa una expresión regular para realizar la comparación.
Conclusión
La comparación de cadenas en PowerShell se puede realizar de varias maneras, como comprobaciones de igualdad con -eq, o usando .Equals(), o usando la coincidencia de patrones avanzada con -like y -match.
Espero que ahora entiendas muy bien cómo comparar cadenas en PowerShell usando varios métodos.


