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

时间:2011-04-15 11:11:46

标签: regex scala

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

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

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

1 个答案:

答案 0 :(得分:23)

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

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