clojure.string/split 和 clojure.string/split-lines 继承了 java.lang.String#split(String,int)函数去除尾随连续分隔符的奇怪默认行为。
(clojure.string/split "banana" #"an")
⇒ ["b" "" "a"]
(clojure.string/split "banana" #"na")
⇒ ["ba"]
(clojure.string/split "nanabanana" #"na")
⇒ ["" "" "ba"]
在 split-lines 的情况下,逐行处理文件并重新组合会导致删除文件中尾随的新行。在两种情况下,此行为都很令人惊讶,并且无法从文档字符串中推断出来。split的解决方案是通过传递一个-1限制。
*建议:* 考虑到当前用户可能依赖于当前行为,附件仅更新文档字符串来警告此行为,并建议使用-1作为限制来解决。
*补丁:* clj-1360-2.patch