En mi aplicación necesito poder encontrar todas las subcadenas numéricas, luego escanear cada una, encontrar la primera que coincida con un rango (como entre 5 y 15) y reemplazar esa instancia con otra cadena "X".ruby regex - cómo reemplazar enésima instancia de una coincidencia en una cadena
Mi cadena de prueba s = "1 foo 100 bar 10 gee 1"
Mi patrón inicial es cualquier cadena de 1 o más dígitos, por ejemplo, re = Regexp.new(/\d+/)
matches = s.scan(re)
da ["1", "100", "10", "1"]
Si quiero reemplazar el partido enésimo, y sólo el N ° partido, con "X" ¿cómo puedo?
Por ejemplo, si quiero reemplazar el tercer partido "10" (coincidencias [2]) que no pueden simplemente decir s[matches[2]] = "X"
ya que hace dos reemplazos
"1 foo X0 bar X gee 1"
Cualquier ayuda se agradece !
Tengo que admitir que nunca se me ocurrió reemplazar las otras cerillas por ellas mismas ... ¡listo! ¡Gracias! – jpwynn
Prefiero usar 'next' en lugar de devolver el valor original. – bwest
El uso de bloques ayudó a resolver mi problema. ¡Gracias! – sbos61