¿Cómo reemplazar varios caracteres en una cadena en PowerShell?
Cuando trabajaba con cadenas en PowerShell, recibí el requisito de reemplazar varios caracteres o subcadenas para limpiar o modificar sus datos. En este tutorial, le mostraré cómo reemplazar varios caracteres en una cadena usando PowerShell utilizando varios métodos con ejemplos.
Para reemplazar varios caracteres en una cadena en PowerShell, puede usar el operador -replace para reemplazos basados en patrones, el método String.Replace() para sustituciones sencillas o una tabla hash para administrar múltiples reemplazos de manera eficiente. Por ejemplo, puede reemplazar las abreviaturas de los estados con nombres completos usando el operador -replace: $string=$string -replace “NY”, “New York”.
1. Usando el operador -replace
El operador -replace es útil en PowerShell y le permite reemplazar texto usando expresiones regulares. Este método es particularmente útil cuando necesita reemplazar patrones en lugar de cadenas fijas.
Déjame mostrarte un ejemplo.
Suponga que tiene una cadena que contiene abreviaturas de estados y desea reemplazarlas con sus nombres completos. Así es como puedes hacerlo:
# Original string with state abbreviations
$string = "NY, CA, TX, FL"
# Replace abbreviations with full names
$string = $string -replace "NY", "New York"
$string = $string -replace "CA", "California"
$string = $string -replace "TX", "Texas"
$string = $string -replace "FL", "Florida"
# Output the modified string
Write-Output $string
Producción :
New York, California, Texas, FloridaTambién puede consultar la captura de pantalla a continuación para ver el resultado exacto después de ejecutar el script anterior usando el código VS.
Verifique Concatenar cadenas con nueva línea en PowerShell
2. Usando el método String.Replace()
El método String.Replace() es otra forma de reemplazar caracteres o subcadenas en PowerShell. Este método distingue entre mayúsculas y minúsculas y reemplaza todas las apariciones de una subcadena especificada.
Déjame mostrarte un ejemplo de cómo utilizar el método String.Replace().
Supongamos que tiene una cadena con nombres de ciudades y desea reemplazarlos con nombres diferentes:
# Original string with city names
$string = "Los Angeles, New York, Chicago, Houston"
# Replace city names
$string = $string.Replace("Los Angeles", "LA")
$string = $string.Replace("New York", "NYC")
$string = $string.Replace("Chicago", "Chi-Town")
$string = $string.Replace("Houston", "H-Town")
# Output the modified string
Write-Output $stringProducción :
LA, NYC, Chi-Town, H-TownTambién puede consultar la captura de pantalla a continuación para ver el resultado.
3. Uso de una tabla hash para múltiples reemplazos
El uso de una tabla hash puede simplificar el proceso cuando necesita reemplazar varios caracteres o subcadenas en una cadena en PowerShell. Este método le permite definir todos los reemplazos en una única estructura y aplicarlos de forma iterativa.
Puedes consultar el siguiente ejemplo:
Considere un escenario en el que necesita reemplazar varias abreviaturas con sus formas completas en una cadena:
# Original string with abbreviations
$string = "The GDP of USA is higher than that of UK and EU."
# Hashtable with replacements
$replacements = @{
"USA" = "United States of America"
"UK" = "United Kingdom"
"EU" = "European Union"
}
# Apply replacements
foreach ($key in $replacements.Keys) {
$string = $string.Replace($key, $replacements[$key])
}
# Output the modified string
Write-Output $stringProducción :
The GDP of United States of America is higher than that of United Kingdom and European Union.Leer concatenar cadena y variable en PowerShell
4. Uso de Select-String con expresiones regulares
También puede usar el cmdlet Select-String combinado con expresiones regulares para reemplazar varios caracteres en una cadena en PowerShell.
Aquí hay un ejemplo.
Supongamos que tiene una cadena con fechas en varios formatos y desea estandarizarlas a MM/DD/AAAA:
# Original string with dates
$string = "Today is 2024-07-28, and the meeting is on 28/07/2024."
# Regular expression pattern for different date formats
$pattern = "\b(\d{4})-(\d{2})-(\d{2})\b|\b(\d{2})/(\d{2})/(\d{4})\b"
# Replace dates with standardized format
$string = [regex]::Replace($string, $pattern, {
if ($args[0] -match "(\d{4})-(\d{2})-(\d{2})") {
"{0}/{1}/{2}" -f $matches[2], $matches[3], $matches[1]
} elseif ($args[0] -match "(\d{2})/(\d{2})/(\d{4})") {
"{0}/{1}/{2}" -f $matches[1], $matches[2], $matches[3]
}
})
# Output the modified string
Write-Output $stringProducción :
Today is 07/28/2024, and the meeting is on 07/28/2024.Puede ver el resultado en la captura de pantalla a continuación después de ejecutar el script anterior usando el código VS.
Conclusión
En este tutorial, he explicado cómo reemplazar varios caracteres en una cadena en PowerShell usando diferentes métodos. Recomiendo usar el operador -replace para esto.


