我想在字符串中添加一个字符,然后获取另一个字符串,其中添加了字符作为结果。
这不起作用:
(cons \a "abc")
可能的解决方案,按优先顺序排列:
(apply str (cons \a "abc"))
)在我自己动手之前是否有类别1 解决方案?
编辑:这是一个非常愚蠢的问题。的:(
答案 0 :(得分:50)
怎么样:
(str "abc" \a)
这会在我的机器上返回“abca”。
您也可以将它用于任意数量的字符串/字符:(str "kl" \m "abc" \a \b)
。
答案 1 :(得分:2)
您可以使用join
中的clojure.string
:
(clojure.string/join [\a "abc"])
但对于简单的用例,您应该使用str
,正如@Dan Filimon建议的那样。 join
有一个额外的好处,你可以在连接的字符串之间放一个分隔符,但没有分隔符,它实际上只适用str
:
(defn ^String join
"Returns a string of all elements in coll, separated by
an optional separator. Like Perl's join."
{:added "1.2"}
([coll]
(apply str coll))
([separator [x & more]]
(loop [sb (StringBuilder. (str x))
more more
sep (str separator)]
(if more
(recur (-> sb (.append sep) (.append (str (first more))))
(next more)
sep)
(str sb)))))