如何使用正则表达式和匹配来替换字符串的内容?特别是我想检测整数并递增它们。像这样:
val y = "There is number 2 here"
val p = "\\d+".r
def inc(x: String, c: Int): String = ???
assert(inc(y, 1) == "There is number 3 here")
答案 0 :(得分:3)
将replaceAllIn
与替换函数一起使用是一种简便的方法:
val y = "There is number 2 here"
val p = "-?\\d+".r
import scala.util.matching.Regex.Match
def replacer(c: Int): Match => String = {
case Match(i) => (i.toInt + c).toString
}
def inc(x: String, c: Int): String = p.replaceAllIn(x, replacer(c))
然后:
scala> inc(y, 1)
res0: String = There is number 3 here
Scala的Regex
提供了一些有用的工具,包括一个带有部分功能的replaceSomeIn
等。