如何使用Clojure中的索引替换字符串中的字符

时间:2019-05-31 10:32:04

标签: clojure

我想使用索引替换字符串中的字符。怎么做?还是有其他访问方式?

2 个答案:

答案 0 :(得分:2)

与Clojure中几乎所有常用的东西一样,字符串是不可变的,因此您需要在所需位置用新字符代替旧字符来创建新字符串:

(defn replace-at [s idx replacement]
  (str (subs s 0 idx) replacement (subs s (inc idx))))

> (replace-at "012345" 2 "x")
01x345

答案 1 :(得分:0)

Strings是不可变的,但是StringBuilders不是不可变的,因此您可以利用它:

(defn set-char-at [^String s idx ch]
  (str (doto (StringBuilder. s) (.setCharAt idx ch))))
(set-char-at "foobar" 2 \x) ;;=> "foxbar"