2016-10-12 42 views
0

是否有方法使用原始匹配值替换文本中的某个字符串?
举例来说,我想通过小数,全部更换为整数,如下面的例子:Scala:如何使用原始匹配值替换字符串

"hello 45 hello 4 bye" --> "hello 45.0 hello 4.0 bye" 

我可以findAllIn匹配所有的数字和后取代他们,但我想知道是否有更好的解决方案。

回答

2

使用RegularExpressions,您可以使用$1拿到第一个捕获组的结果(括号中):

val regex = "(\\d+)".r 
val text = "hello 45 hello 4 bye" 
val result = regex.replaceAllIn(text, "$1.0") 
// result: String = hello 45.0 hello 4.0 bye 
+1

为什么在用'$ 0'引用整个匹配时使用'$ 1'? –

+0

@WiktorStribiżewyup,这更简单:/ –

+0

你知道我怎么在'$ 0'上做一些操作?例如:'replaceAllIn(text,“$ 0”.take(“$ 0”.length - 1)+“.0”)'因为“非法组参考”而不起作用,是否可以这样做? – Simon

相关问题