Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

238
Vistas
¿Cómo puedo reemplazar palabras en una cadena con elementos en una matriz en Ruby?

Estoy tratando de reemplazar palabras (secuencia de caracteres, en general) en una cadena con los valores correspondientes en una matriz. Un ejemplo es:

"The dimension of the square is {{width}} and {{length}}" con la matriz [10,20] debería dar

"The dimension of the square is 10 and 20"

He intentado usar gsub como

 substituteValues.each do |sub| value.gsub(/\{\{(.*?)\}\}/, sub) end

Pero no pude hacerlo funcionar. También he pensado en usar un hash en lugar de una matriz de la siguiente manera:

{"{{width}}"=>10, "{{height}}"=>20} . Siento que esto podría funcionar mejor, pero nuevamente, no estoy seguro de cómo codificarlo (nuevo en Ruby). Cualquier ayuda es apreciada.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Puedes usar

 h = {"{{width}}"=>10, "{{length}}"=>20} s = "The dimension of the square is {{width}} and {{length}}" puts s.gsub(/\{\{(?:width|length)\}\}/, h) # => The dimension of the square is 10 and 20

Vea la demostración de Ruby . Detalles :

  • \{\{(?:width|length)\}\} - una expresión regular que coincide
    • \{\{ - una {{ subcadena
    • (?:width|length) : un grupo que no captura que coincide con palabras de width o length
    • \}\} - una }} subcadena
  • gsub reemplaza todas las apariciones en la cadena con
  • h : utilizado como segundo argumento, permite reemplazar las coincidencias encontradas que son iguales a las claves hash con los valores hash correspondientes.

Puede usar una definición hash un poco más simple sin { y } y luego usar un grupo de captura en la expresión regular para que coincida con la length o el width . Entonces necesitas

 h = {"width"=>10, "length"=>20} s = "The dimension of the square is {{width}} and {{length}}" puts s.gsub(/\{\{(width|length)\}\}/) { h[Regexp.last_match[1]] }

Vea esta demostración de Ruby . Entonces, aquí, (width|length) se usa en lugar de (?:width|length) y solo el Grupo 1 se usa como clave en h[Regexp.last_match[1]] dentro del bloque.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda