我正在学习scala。当我写下如下声明时,
"abcdpqrs".split("").grouped(2).map(_.mkString("")).mkString("|")
我希望它能打印出来,
ab|cd|pq|rs
但是它正在打印,
a|bc|dp|qr|s
我发现这种行为不稳定。我是否遗漏了某些东西,或者还有其他什么可以像我预期的那样对列表进行分区?
答案 0 :(得分:3)
由于a|bc|dp|qr|s
split("")
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)