Как заменить символ в строке, используя индекс в clojure - PullRequest
0 голосов
/ 31 мая 2019

Я хочу заменить символ в строке, используя индекс.Как это сделать?Или есть другой способ доступа к нему?

Ответы [ 2 ]

2 голосов
/ 31 мая 2019

Как почти все, что обычно используется в Clojure, строки являются неизменяемыми, поэтому вам нужно создать новую строку с новым символом вместо старого в нужном месте:

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

> (replace-at "012345" 2 "x")
01x345
0 голосов
/ 06 июня 2019

Strings являются неизменными, но StringBuilders s не являются, поэтому вы можете использовать это:

(defn set-char-at [^String s idx ch]
  (str (doto (StringBuilder. s) (.setCharAt idx ch))))
(set-char-at "foobar" 2 \x) ;;=> "foxbar"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...