如何解决在Clojure中,为什么从空文件中拆分字符串会返回1个元素?
| 考虑以下:=> (even? (count []))
true
到目前为止,一切都很好。现在考虑(假设我的文件为空):
(odd? (count (str/split (slurp my-file) #\"\\|\")))
true
err ...为什么从空文件返回的向量不等于(零)?
=>(str/split (slurp my-file) #\"\\|\")
[\"\"]
嗯,有人可以解释为什么在这种情况下返回空字符串吗?
我正在尝试确定文件中的记录数是否为奇数。
解决方法
clojure.string/split
使用java.util.regex.Pattern/split
进行拆分。请参阅有关Java的问题以获取解释。也就是说,即使模式根本不匹配,split
也会将模式的第一个匹配之前的所有内容作为第一个拆分返回。
测试集合(列表,数组,映射,字符串等)是否为空的规范方法是在其上调用seq
,这将为空集合返回nil
。
(defn odd-number-of-records? [filename]
(let [txt (slurp filename)]
(when (seq txt)
(odd? (count (str/split txt #\"\\|\"))))))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。