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