如何在scala中用文字\d替换所有数字?
我想编写一个函数,用文字 \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
,这就是我现在想要的。我刚刚更新了问题。谢谢大家。
I want to write a function, to replace all the numbers in a string with literal \d
. My code is:
val r = """\d""".r
val s = r.replaceAllIn("123abc", """\d""")
println(s)
I expect the result is \d\d\dabc
, but get:
dddabc
Then I change my code (line 2) to:
val s = r.replaceAllIn("123abc", """\\d""")
The result is correct now: \d\d\dabc
But I don't understand why the method replaceAllIn
converts the string, not use it directly?
There was a toList
in my previous code, that now what I want. I have just update the question. Thanks to everyone.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Scala 的
Regex
在底层使用java.util.regex
(至少在 JVM 上)。现在,如果您在 Java 文档上查找replaceAll
,您将看到以下内容:Scala's
Regex
usesjava.util.regex
underneath (at least on the JVM). Now, if you look upreplaceAll
on Java docs, you'll see this:只需删除
toList
即可。String
是(隐式地,通过WrappedString
,可转换为)Seq[Char]
。如果您调用toList
,您将拥有一个List[Char]
。Just remove the
toList
.String
s are (implicitly, viaWrappedString
, convertible to)Seq[Char]
. If you invoketoList
, you will have aList[Char]
.