是否有方法使用原始匹配值替換文本中的某個字符串?
舉例來說,我想通過小數,全部更換爲整數,如下面的例子: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