使用正则表达式检测和转换字符串中的数字

时间:2014-10-12 14:17:59

标签: regex scala

如何使用正则表达式和匹配来替换字符串的内容?特别是我想检测整数并递增它们。像这样:

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")

1 个答案:

答案 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等。