scala 有一个标准的分割字符串的方法StringOps.split
但它的行为有点让我惊讶。
演示一下,使用快捷便利功能
def sp(str: String) = str.split('.').toList
以下表达式全部计算结果为 true
(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遵循什么规则?
对于奖励积分,有没有一种好方法(无需太多复制/字符串附加)来获得我期望的分割?