"grouped" 在 scala 中的意外行为

unexpected behaviour of "grouped" in scala

我现在正在学习scala。当我写下如下语句时,

"abcdpqrs".split("").grouped(2).map(_.mkString("")).mkString("|")

我希望它能打印出来,

ab|cd|pq|rs

但它正在打印,

a|bc|dp|qr|s

我发现这种行为不稳定。我是不是遗漏了什么,或者还有什么可以按照我的预期对列表进行分区?

由于 split("")

,您得到 a|bc|dp|qr|s
scala> "abcdpqrs".split("")
res0: Array[String] = Array("", a, b, c, d, p, q, r, s)

如果你在没有 split("") 的情况下这样做,你会得到

scala> "abcdpqrs".grouped(2).map(_.mkString("")).mkString("|")
res4: String = ab|cd|pq|rs

我想这就是你想要的

编辑

为了记录@marstran 很有帮助地指出这只发生在 java 7 - split 的行为被 java 8 改变了,而不是 split("") 会给出

scala> "abcdpqrs".split("")
res0: Array[String] = Array(a, b, c, d, p, q, r, s)