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

Fél*_*lli 23 string split scala

在Ruby中,我做了:

"string1::string2".split("::")
Run Code Online (Sandbox Code Playgroud)

在Scala中,我找不到如何split使用字符串,而不是单个字符.

Jan*_*anx 79

REPL比Stack Overflow更容易.我只是粘贴你的例子.

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)
Run Code Online (Sandbox Code Playgroud)

  • 这应该是答案.Moritz创建正则表达式的策略有效,但这个简单的解决方案更好. (4认同)
  • 所以斯卡拉>红宝石 (4认同)

Mor*_*itz 30

在您的示例中,它没有什么区别,但String#splitScala中的方法实际上采用了String表示正则表达式的方法.因此,请确保根据需要转义某些字符,例如,"a..b.c".split("""\.\.""")或者使事实更明显,您可以在以下方法上调用split方法RegEx:"""\.\.""".r.split("a..b.c").

  • 我建议使用`\ Q`和`\ E`而不是单独转义.只需在开头添加`\ Q`(或根据需要添加'\\ Q`),在结尾添加`\ E`. (10认同)

Fab*_*eeg 12

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


haf*_*fla 5

如果您查看Java 实现,您会发现 to 参数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)
Run Code Online (Sandbox Code Playgroud)