在 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.string
或 clojure.data.csv
或 re-seq
或互操作:
(defn comma-separate [s]
(->> s
(partition-by #{\,})
(take-nth 2)
(map #(apply str %))))
(comma-separate "foo,bar") ;; ("foo" "bar")
我同意您应该使用 clojure.string
或 clojure.data.csv
我还是 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.string
或 clojure.data.csv
或 re-seq
或互操作:
(defn comma-separate [s]
(->> s
(partition-by #{\,})
(take-nth 2)
(map #(apply str %))))
(comma-separate "foo,bar") ;; ("foo" "bar")
我同意您应该使用 clojure.string
或 clojure.data.csv