Scala 中如何按字符串拆分字符串
在 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
REPL 甚至比 Stack Overflow 更容易。我只是按原样粘贴了您的示例。
The REPL is even easier than Stack Overflow. I just pasted your example as is.
在您的示例中,这没有什么区别,但 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 aString
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 aRegEx
:"""\.\.""".r.split("a..b.c")
.这行 Ruby 应该像在 Scala 中一样工作,并返回一个
Array[String]
。That line of Ruby should work just like it is in Scala too and return an
Array[String]
.如果您查看 Java 实现 您会看到
String#split
的参数实际上会被编译为正则表达式。"string1::string2".split("::")
没有问题,因为 ":" 只是正则表达式中的一个字符,但例如"string1|string2" .split("|")
不会产生预期的结果。 “|”是正则表达式中表示交替的特殊符号。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.