2011-04-15 32 views
9

En Rubí puedo reemplazar caracteres en una cadena de la siguiente manera:Scala expresiones regulares reemplazar con función anónima

a = "one1two2three" 
a.gsub(/\d+/) {|e| e.to_i + 1} 
=> "one2two3three" 

El resultado de la evaluación de la manzana de la segunda línea, sustituirá a lo que estaba igualado en el patrón. ¿Podemos hacer algo equivalente en Scala? ¿Reemplazar algo en una expresión regular con los resultados de una función/función anónima?

Respuesta

19

Sí, Regex#replaceAllIn tiene una versión sobrecargada que toma la función Match => String. La versión equivalente de Scala de su código sería:

"""\d+""".r.replaceAllIn("one1two2three", m => (m.group(0).toInt + 1).toString) 
+0

¡Excelente! ¡Gracias! – Geo

Cuestiones relacionadas