添加字符串到另一个字符串?

时间:2011-11-10 16:20:10

标签: string clojure

我想在字符串中添加一个字符,然后获取另一个字符串,其中添加了字符作为结果。

这不起作用:

(cons \a "abc")

可能的解决方案,按优先顺序排列:

  1. Clojure核心功能
  2. Clojure库功能
  3. Clojure用户定义的(me!)函数(例如(apply str (cons \a "abc"))
  4. java.lang.String methods
  5. 在我自己动手之前是否有类别1 解决方案?


    编辑:这是一个非常愚蠢的问题。的:(

2 个答案:

答案 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)))))