在Ruby中,我可以用以下方式替换字符串中的字符:
a = "one1two2three"
a.gsub(/\d+/) {|e| e.to_i + 1}
=> "one2two3three"
从第二行评估块的结果将替换模式中匹配的块。我们可以在Scala中做同等的事情吗?用函数/匿名函数的结果替换正则表达式中的某些内容?
答案 0 :(得分:23)
是的,Regex#replaceAllIn
有一个带有函数Match => String
的重载版本。您的代码的等效Scala版本将是:
"""\d+""".r.replaceAllIn("one1two2three", m => (m.group(0).toInt + 1).toString)