在Scala中将数字序列映射到单个字符

时间:2015-04-13 20:23:43

标签: regex string scala

给定一个输入字符串,将字符串中包含的三种可能的数字序列映射到一个数字,并保持字符串的其他元素不变:

  1. 单个号码应映射到char 1:" help3me" - > " help1me"

  2. 连续两个数字应该映射到char 2:" help18me" - > " help2me"

  3. 连续三个或更多数字应映射到3:" test3432help234312me" - > " test3help3me"

    我们的输入字符串可以包含任意数量的1,2,3+长度的数字序列,因此有效的输入示例是" help3490897test73me23435please5"

      

    Scala中上述问题的有效解决方案是什么,它只涉及将三种可能的情况作为正则表达式进行枚举?

1 个答案:

答案 0 :(得分:3)

使用正则表达式和方法replaceAllIn。第二个参数是将Match对象转换为其长度的函数。

val str =  "help3me34"
val expr = "(\\d+)".r
expr.replaceAllIn(str, x => (x.group(0).length min 3).toString)
res2: String = help1me2