给定一个输入字符串,将字符串中包含的三种可能的数字序列映射到一个数字,并保持字符串的其他元素不变:
单个号码应映射到char 1:" help3me" - > " help1me"
连续两个数字应该映射到char 2:" help18me" - > " help2me"
连续三个或更多数字应映射到3:" test3432help234312me" - > " test3help3me"
我们的输入字符串可以包含任意数量的1,2,3+长度的数字序列,因此有效的输入示例是" help3490897test73me23435please5"
Scala中上述问题的有效解决方案是什么,它只涉及将三种可能的情况作为正则表达式进行枚举?
答案 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