在Clojure中拆分字符串

时间:2015-03-19 20:26:15

标签: clojure

我还是Clojure的新人;我正在尝试拆分从CSV文件解析的值,但不使用clojure.string/split lib或任何其他lib clojure.core,请提前帮助,谢谢。

2 个答案:

答案 0 :(得分:9)

你可以用re-seq和string / split

来完成相同的结果
user> (clojure.string/split "a,b,c,d,e" #",")
["a" "b" "c" "d" "e"]

user> (re-seq #"[^,]+" "a,b,c,d,e")
("a" "b" "c" "d" "e")

这两个都没有依赖关系,因此在很多情况下几乎没有理由不使用字符串/拆分。

如果您愿意添加依赖项,

解析CSV也是一个不错的选择:

user> (require '[clojure.data.csv :as csv])
nil
user> (csv/read-csv "A,B,C\n1,2,3\n4,5,5")
(["A" "B" "C"] ["1" "2" "3"] ["4" "5" "5"])

答案 1 :(得分:2)

如果您的双手被束缚,无法使用clojure.stringclojure.data.csvre-seq或互操作:

(defn comma-separate [s]
  (->> s
      (partition-by #{\,})
      (take-nth 2)
      (map #(apply str %))))

(comma-separate "foo,bar") ;; ("foo" "bar")

我同意您应该使用clojure.stringclojure.data.csv