Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Scala regex replace with anonymous function

Tags:

regex

scala

In Ruby I can replace characters in a string in the following way:

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

The result of evaluating the block from the second line, will replace what was matched in the pattern. Can we do something equivalent in Scala? Replace something in a regex with the results of a function/anonymous function?

like image 927
Geo Avatar asked Apr 15 '11 11:04

Geo


1 Answers

Yes, Regex#replaceAllIn has an overloaded version that takes a function Match => String. The equivalent Scala version of your code would be:

"""\d+""".r.replaceAllIn("one1two2three", m => (m.group(0).toInt + 1).toString)
like image 186
Moritz Avatar answered Oct 14 '22 22:10

Moritz