Búsqueda de sitios web

¿Cómo reemplazar texto en cadenas usando PowerShell?


Esto será útil si está trabajando con cadenas en la automatización de PowerShell. Aquí he explicado cómo reemplazar texto en cadenas usando PowerShell usando diferentes métodos.

Para reemplazar texto en cadenas usando PowerShell, puede usar el método Replace() para reemplazos simples que distinguen entre mayúsculas y minúsculas o el operador -replace para reemplazos más complejos que distinguen entre mayúsculas y minúsculas. -Reemplazos insensibles y basados en expresiones regulares. Por ejemplo, $string.Replace("old", "new") reemplaza todas las apariciones de “old” por “new”, mientras que $string -replace "(?i)old" , "nuevo" realiza un reemplazo que no distingue entre mayúsculas y minúsculas.

Reemplazar texto en cadenas usando PowerShell

Ahora, déjame mostrarte algunos métodos útiles para reemplazar texto en cadenas en PowerShell con ejemplos.

Usando el método Reemplazar()

El método Replace() es un método muy útil para reemplazar texto en una cadena en PowerShell. Este método distingue entre mayúsculas y minúsculas y reemplaza todas las apariciones de una subcadena especificada con una nueva subcadena.

Déjame mostrarte un ejemplo.

Ejemplo:

$string = "Hello World"
$newString = $string.Replace("World", "PowerShell")
Write-Output $newString  # Output: Hello PowerShell

En este ejemplo, la palabra "Mundo" se reemplaza por "PowerShell".

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

Usando el operador -replace

En PowerShell, también puede usar el operador -replace para reemplazar texto en cadenas usando PowerShell.

El operador -replace en PowerShell es más flexible que el método Replace() porque admite expresiones regulares. Déjame mostrarte un ejemplo.

Ejemplo:

$string = "Hello World"
$newString = $string -replace "World", "PowerShell"
Write-Output $newString  # Output: Hello PowerShell

Al igual que el método Replace() , este reemplaza "Mundo" por "PowerShell".

Puede ver el resultado en la captura de pantalla a continuación después de ejecutar el script de PowerShell anterior.

Consulte Contar apariciones de una subcadena en una cadena en PowerShell

Reemplazo que no distingue entre mayúsculas y minúsculas mediante PowerShell

Para realizar un reemplazo que no distinga entre mayúsculas y minúsculas, puede utilizar el operador -replace con la opción de expresión regular (?i) en PowerShell.

Déjame mostrarte un ejemplo.

Ejemplo:

$string = "Hello WORLD"
$newString = $string -replace "(?i)world", "PowerShell"
Write-Output $newString  # Output: Hello PowerShell

Aquí, la opción (?i) hace que el reemplazo no distinga entre mayúsculas y minúsculas, por lo que "MUNDO" se reemplaza por "PowerShell".

Reemplazar varios caracteres usando PowerShell

Puede reemplazar varios caracteres encadenando varias llamadas al método Replace() o utilizando una expresión regular más compleja con el operador -replace .

Déjame mostrarte algunos ejemplos.

Ejemplo con Replace() Método:

$string = "Hello-World-!"
$newString = $string.Replace("-", " ").Replace("!", "")
Write-Output $newString  # Output: Hello World 

Ejemplo con -replace Operador:

$string = "Hello-World-!"
$newString = $string -replace "[-!]", " "
Write-Output $newString  # Output: Hello World  

En estos ejemplos, tanto - como ! se reemplazan por espacios.

Leer Eliminar caracteres de cadenas en PowerShell

Reemplazo condicional en PowerShell

También puede realizar reemplazos condicionales usando PowerShell. Por ejemplo, es posible que desees reemplazar el texto sólo si cumple ciertos criterios. Déjame mostrarte un ejemplo.

Ejemplo:

$string = "The quick brown fox jumps over the lazy dog"
if ($string -match "fox") {
    $newString = $string -replace "fox", "cat"
}
Write-Output $newString  # Output: The quick brown cat jumps over the lazy dog

En este ejemplo, "zorro" se reemplaza por "gato" solo si se encuentra "zorro" en la cadena.

Puede ver el resultado en la siguiente captura de pantalla:

Reemplazar texto en varias líneas en PowerShell

Cuando trabaje con cadenas de varias líneas, puede utilizar el operador -replace para reemplazar texto en todas las líneas en PowerShell. Déjame mostrarte un ejemplo.

Ejemplo:

$string = @"
Hello World
Hello PowerShell
"@

$newString = $string -replace "Hello", "Hi"
Write-Output $newString

Salida:

Hi World
Hi PowerShell

En este ejemplo, "Hola" se reemplaza por "Hola" en ambas líneas.

Conclusión

En este tutorial, he explicado cómo reemplazar texto en cadenas en PowerShell usando el método Reemplazar() y usando el operador -reemplazar con varios ejemplos.

Artículos relacionados