如何在scala中用文字\d替换所有数字?

发布于 2024-10-19 08:12:01 字数 500 浏览 1 评论 0原文

我想编写一个函数,用文字 \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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

逆光飞翔i 2024-10-26 08:12:02

Scala 的 Regex 在底层使用 java.util.regex(至少在 JVM 上)。现在,如果您在 Java 文档上查找 replaceAll,您将看到以下内容:

请注意反斜杠 (\) 和美元
替换字符串中的符号 ($)
可能会导致结果不同
比如果它被视为
文字替换字符串。美元
标志可被视为参考
捕获子序列如所描述的
上面,反斜杠用于
对中的文字字符进行转义
替换字符串。

Scala's Regex uses java.util.regex underneath (at least on the JVM). Now, if you look up replaceAll on Java docs, you'll see this:

Note that backslashes (\) and dollar
signs ($) in the replacement string
may cause the results to be different
than if it were being treated as a
literal replacement string. Dollar
signs may be treated as references to
captured subsequences as described
above, and backslashes are used to
escape literal characters in the
replacement string.

北方的巷 2024-10-26 08:12:01

只需删除 toList 即可。

val r = """\d""".r
val list = r.replaceAllIn("123abc", """\\d""")
println(list)

String 是(隐式地,通过 WrappedString,可转换为)Seq[Char]。如果您调用toList,您将拥有一个List[Char]

Just remove the toList.

val r = """\d""".r
val list = r.replaceAllIn("123abc", """\\d""")
println(list)

Strings are (implicitly, via WrappedString, convertible to) Seq[Char]. If you invoke toList, you will have a List[Char].

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文