我想使用索引替换字符串中的字符。怎么做?还是有其他访问方式?
答案 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"