为什么Split在不同的字符串上表现不同?

Shi*_*nsh 4 string split scala

以下是两种情况:

情况1:

scala> "".split('f')
res3: Array[String] = Array("")
Run Code Online (Sandbox Code Playgroud)

案例2:

scala> "f".split('f')
res5: Array[String] = Array()
Run Code Online (Sandbox Code Playgroud)

为什么它在这里表现不同!具体的解释会很棒!

Zyo*_*oma 9

在第一种情况下,您提供的字符串和分隔符与该字符串中的任何字符都不匹配.所以它只返回原始字符串.这可以用非空字符串示例来说明:

scala> "abcd".split('f')
res2: Array[String] = Array(abcd)
Run Code Online (Sandbox Code Playgroud)

但是,第二个字符串包含分隔符.所以它匹配分隔符并拆分字符串.由于拆分不包含任何内容 - 它返回一个空数组.根据Java String文档:

如果表达式不匹配:

如果表达式与输入的任何部分都不匹配,那么结果数组只有一个元素,即该字符串.

如果表达式匹配:

因此,结尾的空字符串不包含在结果数组中.

资料来源:http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String,%20int)