我发现了这个"奇怪的"类split
的scala函数string
中的行为:
"a:b::".split(":")
返回Array[String] = Array(a, b)
相反,我想获得Array[String] = Array(a, b, "", "")
你有想法得到这样的回应吗?
答案 0 :(得分:4)
将limit
参数与-1
:
scala> "a:b::".split(":", -1)
res1: Array[String] = Array(a, b, "", "")
签名split(regex: String, limit: Int)
有一个更长的重载,但你只使用regex
参数的重载,它调用前一个重载,limit
为零。当limit
为零时,从数组末尾丢弃空字符串。
来自javadoc:
如果n [limit]为零,则模式将被应用尽可能多次,数组可以具有任何长度,并且尾随空字符串将被丢弃。