在 Clojure 中拆分字符串

Split string in Clojure

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

你可以用 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")

这两个都没有依赖关系,因此在许多情况下没有理由不使用 string/split。

如果你愿意添加依赖,解析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"])

如果您手头拮据,无法使用 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