Ответ 1
Как насчет:
(str "abc" \a)
Это возвращает "abca" на моей машине.
Вы также можете использовать его для любого количества строк/символов: (str "kl" \m "abc" \a \b)
.
Я хочу добавить символ в строку и получить другую строку с добавленным символом в результате.
Это не работает:
(cons \a "abc")
Возможные решения в порядке предпочтения:
(apply str (cons \a "abc"))
)Есть ли какое-либо решение категории 1 до того, как я откажусь от своего имени?
Изменить: это был довольно глупый вопрос. : (
Как насчет:
(str "abc" \a)
Это возвращает "abca" на моей машине.
Вы также можете использовать его для любого количества строк/символов: (str "kl" \m "abc" \a \b)
.
Вы можете использовать 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 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)))))