是否有方法使用原始匹配值替换文本中的某个字符串?
举例来说,我想通过小数,全部更换为整数,如下面的例子:Scala:如何使用原始匹配值替换字符串
"hello 45 hello 4 bye" --> "hello 45.0 hello 4.0 bye"
我可以findAllIn
匹配所有的数字和后取代他们,但我想知道是否有更好的解决方案。
是否有方法使用原始匹配值替换文本中的某个字符串?
举例来说,我想通过小数,全部更换为整数,如下面的例子:Scala:如何使用原始匹配值替换字符串
"hello 45 hello 4 bye" --> "hello 45.0 hello 4.0 bye"
我可以findAllIn
匹配所有的数字和后取代他们,但我想知道是否有更好的解决方案。
使用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
使用replaceAllIn
,需要一个replacer
函数的重载:
为什么在用'$ 0'引用整个匹配时使用'$ 1'? –
@WiktorStribiżewyup,这更简单:/ –
你知道我怎么在'$ 0'上做一些操作?例如:'replaceAllIn(text,“$ 0”.take(“$ 0”.length - 1)+“.0”)'因为“非法组参考”而不起作用,是否可以这样做? – Simon