如果我有:
(["aa=AA"] ["&"] ["bb=BB"] ["&"] ["cc=CC"])
我怎样才能得到:
"aa=AA&bb=BB&cc=CC"
是否有可用的连接函数?
答案 0 :(得分:3)
concat
会在一个级别“展平”嵌套序列:
(apply concat '(["aa=AA"] ["&"] ["bb=BB"] ["&"] ["cc=CC"]))
;; => ("aa=AA" "&" "bb=BB" "&" "cc=CC")
然后您可以使用str
连接序列中的字符串:
(apply str '("aa=AA" "&" "bb=BB" "&" "cc=CC"))
;; => "aa=AA&bb=BB&cc=CC"
组合成一个功能:
(defn concat-str [s]
(->> s
(apply concat)
(apply str)))
(concat-str '(["aa=AA"] ["&"] ["bb=BB"] ["&"] ["cc=CC"]))
;; => "aa=AA&bb=BB&cc=CC"
答案 1 :(得分:1)
您可以按如下方式实施:
(def concatenate (comp (partial apply str) flatten))
然后:
user> (concatenate '(["aa=AA"] ["&"] ["bb=BB"] ["&"] ["cc=CC"]))
aa=AA&bb=BB&cc=CC
答案 2 :(得分:1)
只是为了好玩:
您也可以使用map
函数的行为
user> (defn conc [items] (first (apply map str items)))
#'user/conc
user> (conc '(["aa=AA"] ["&"] ["bb=BB"] ["&"] ["cc=CC"]))
"aa=AA&bb=BB&cc=CC"