Scala有一种标准的方法来分割字符串,即使用StringOps.split
不过它的行为让我有些惊讶。
为了演示,可以使用方便快捷的函数:
def sp(str: String) = str.split('.').toList
以下表达式都会被评估为真。
(sp("") == List("")) //expected
(sp(".") == List()) //I would have expected List("", "")
(sp("a.b") == List("a", "b")) //expected
(sp(".b") == List("", "b")) //expected
(sp("a.") == List("a")) //I would have expected List("a", "")
(sp("..") == List()) // I would have expected List("", "", "")
(sp(".a.") == List("", "a")) // I would have expected List("", "a", "")
所以我期望split返回一个数组,其中包含(分隔符出现的次数)+1个元素,但显然并非如此。
几乎与上面相同,但删除所有尾部空字符串,但拆分空字符串时不是这样。
我无法确定规律。StringOps.split遵循哪些规则?
额外加分:有没有一种好方法(不需要太多复制/字符串追加),可以得到我期望的拆分结果?