Scala 中如何按字符串拆分字符串

发布于 2024-10-28 22:05:38 字数 119 浏览 2 评论 0原文

在 Ruby 中,我做到了:

"string1::string2".split("::")

在 Scala 中,我找不到如何使用字符串而不是单个字符来分割。

In Ruby, I did:

"string1::string2".split("::")

In Scala, I can't find how to split using a string, not a single character.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(4

栀子花开つ 2024-11-04 22:05:38

REPL 甚至比 Stack Overflow 更容易。我只是按原样粘贴了您的示例。

欢迎使用 Scala 版本 2.8.1.final(Java HotSpot Server VM、Java 1.6.0_22)。
输入表达式以对其进行求值。
输入 :help 获取更多信息。

scala> "string1::string2".split("::")
res0: Array[java.lang.String] = Array(string1, string2)

The REPL is even easier than Stack Overflow. I just pasted your example as is.

Welcome to Scala version 2.8.1.final (Java HotSpot Server VM, Java 1.6.0_22).
Type in expressions to have them evaluated.
Type :help for more information.

scala> "string1::string2".split("::")
res0: Array[java.lang.String] = Array(string1, string2)
未央 2024-11-04 22:05:38

在您的示例中,这没有什么区别,但 Scala 中的 String#split 方法实际上采用表示正则表达式的 String 。因此,请务必根据需要转义某些字符,例如 "a..bc".split("""\.\.""") 或为了使这一事实更加明显,您可以调用RegEx 上的 split 方法:"""\.\.""".r.split("a..bc")

In your example it does not make a difference, but the String#split method in Scala actually takes a String that represents a regular expression. So be sure to escape certain characters as needed, like e.g. in "a..b.c".split("""\.\.""") or to make that fact more obvious you can call the split method on a RegEx: """\.\.""".r.split("a..b.c").

离线来电— 2024-11-04 22:05:38

这行 Ruby 应该像在 Scala 中一样工作,并返回一个 Array[String]

That line of Ruby should work just like it is in Scala too and return an Array[String].

七秒鱼° 2024-11-04 22:05:38

如果您查看 Java 实现 您会看到 String#split 的参数实际上会被编译为正则表达式。

"string1::string2".split("::") 没有问题,因为 ":" 只是正则表达式中的一个字符,但例如 "string1|string2" .split("|") 不会产生预期的结果。 “|”是正则表达式中表示交替的特殊符号。

scala> "string1|string2".split("|")
res0: Array[String] = Array(s, t, r, i, n, g, 1, |, s, t, r, i, n, g, 2)

If you look at the Java implementation you see that the parameter to String#split will be in fact compiled to a regular expression.

There is no problem with "string1::string2".split("::") because ":" is just a character in a regular expression, but for instance "string1|string2".split("|") will not yield the expected result. "|" is the special symbol for alternation in a regular expression.

scala> "string1|string2".split("|")
res0: Array[String] = Array(s, t, r, i, n, g, 1, |, s, t, r, i, n, g, 2)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文