我想编写一个函数,用文字\d
替换字符串中的所有数字。我的代码是:
val r = """\d""".r
val s = r.replaceAllIn("123abc", """\d""")
println(s)
我希望结果是\d\d\dabc
,但得到:
dddabc
然后我将我的代码(第2行)更改为:
val s = r.replaceAllIn("123abc", """\\d""")
结果现在正确:\d\d\dabc
但是我不明白为什么方法replaceAllIn
转换字符串,而不是直接使用它?
我之前的代码中有一个toList
,现在正是我想要的。我刚刚更新了这个问题。谢谢大家。
答案 0 :(得分:1)
只需删除toList
。
val r = """\d""".r
val list = r.replaceAllIn("123abc", """\\d""")
println(list)
String
是(隐式地,通过WrappedString
,可转换为)Seq[Char]
。如果您调用toList
,则会有List[Char]
。
答案 1 :(得分:1)
Scala的Regex
下面使用java.util.regex
(至少在JVM上)。现在,如果你在Java文档上查找replaceAll
,你会看到:
请注意反斜杠(
\
)和美元 替换字符串中的符号($
) 可能会导致结果不同 而不是被视为一个 字面替换字符串。美元 标志可以作为参考 捕获的子序列如上所述 上面,反斜杠用于 逃避文字中的字符 替换字符串。