3 Formas impresionantes de usar el método Gsub de Ruby
On octubre 4, 2021 by adminHablemos del método gsub
de Ruby.
Primero, necesitarás una cadena para jugar con este método.
¿Por qué?
Porque usas gsub
en una cadena para reemplazar partes de ella.
De hecho:
La «sub» en «gsub» significa «sustituir», y la «g» significa «global».
¿Tienes tu cadena?
Bien.
Si no, puedes coger la mía.
Aquí está:
str = "white chocolate"
Digamos que queremos sustituir «blanco» por «oscuro».
Así es como:
str.gsub("white", "dark")
Esto es decir:
Dada la cadena str
, ordena que sustituya TODAS las apariciones de la primera palabra (white
) por la segunda (dark
).
Lo que significa que podemos comer un chocolate mucho mejor.
Oh, espera, es sólo una cadena.
¡No podemos comer eso!
De todos modos…
El método gsub
de Ruby puede hacer mucho más que una simple sustitución.
Veamos algunos ejemplos.
Reemplazar patrones con una expresión regular
Reemplazar una sola palabra está bien.
¿Pero qué pasa si puedes reemplazar un patrón?
Como:
Un año, una dirección de correo electrónico, un número de teléfono, etc.
¡Puedes hacerlo!
Aquí tienes un ejemplo:
"a1".gsub(/\d/, "2")# "a2"
El primer argumento es una expresión regular, y es demasiado para abarcarlo aquí.
Pero es un lenguaje de coincidencia de patrones.
En este caso, \d
busca números, como el «1» de «a1».
También puedes hacer esto:
"a1".gsub(/(\w)(\d)/, '')
Lo que resulta en:
"1a"
¡Cambiamos el orden!
Esto funciona usando una característica llamada «grupos de captura».
Podemos utilizar los grupos como para el primer grupo,
para el segundo grupo, etc.
Los grupos se crean con paréntesis.
Gsub avanzado con bloques
Las cosas se ponen realmente interesantes cuando empiezas a usar gsub con un bloque.
¿Por qué?
Porque dentro de un bloque puedes usar la lógica para decidir cómo reemplazar algo.
En lugar de utilizar un valor estático.
Por ejemplo:
"dog".gsub(/\w+/) { |animal| animal == "dog" ? "cat" : "dog" }
Encontramos al animal con \w+
, que significa «uno o más caracteres alfanuméricos».
Entonces:
- Si es un «perro», lo sustituimos por «gato»
- Si la palabra es cualquier otra, la sustituimos por «perro»
Este tipo de lógica no es posible con un valor estático, el 2º parámetro de gsub.
Reemplazar múltiples términos con un hash
Si tienes una lista de sustituciones que hacer puedes usar un hash.
Como éste:
colors = { "B" => "blue", "G" => "green", "R" => "red"}
Esto funciona como un diccionario de traducción, donde las claves serán reemplazadas por sus valores.
Aquí tienes un ejemplo:
"BBBGR".gsub(/\w/, colors)
Que da como resultado:
"bluebluebluegreenred"
Asegúrate de que tu 1er argumento coincidirá con las claves.
En este caso, \w
coincide con caracteres individuales, por lo que coincidirá con «B» y luego lo sustituirá por «azul».
Resumen
¡Has aprendido sobre el método gsub en Ruby! Es un poderoso método que te permite reemplazar, o sustituir caracteres dentro de una cadena.
Tiene múltiples usos:
- Eliminar caracteres inválidos (haciendo que el 2º argumento sea una cadena vacía)
- Reemplazar marcadores de posición &acrónimos por sus valores completos
- Usar patrones &lógicos para cambiar una cadena
Ahora te toca practicar con este método para que puedas hacer valer tus nuevos conocimientos.
Gracias por leer 🙂
Deja una respuesta