Scala正则表达式替换为匿名函数

Geo*_*Geo 11 regex scala

在Ruby中,我可以通过以下方式替换字符串中的字符:

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

从第二行评估块的结果将替换模式中匹配的块.我们可以在Scala中做同等的事情吗?用函数/匿名函数的结果替换正则表达式中的内容?

Mor*_*itz 23

是的,Regex#replaceAllIn有一个需要函数的重载版本Match => String.您的代码的等效Scala版本将是:

"""\d+""".r.replaceAllIn("one1two2three", m => (m.group(0).toInt + 1).toString)
Run Code Online (Sandbox Code Playgroud)