Я уже искал сайт, но не нашел подходящего ответа на мой конкретный вопрос о замене подстрок. Я знаю, как заменить подстроку / регулярное выражение через clojure.string/replace
, но не уверен, что использовать ее в этом случае.
Допустим, скажем. У меня есть несколько строк на первом месте:
(def test-str "I am a test string. :name to replace, :age to replace. And there are strange symbols in this string. And here are the keyword shall not modify, such as :not-interested.")
(def another-test-str ":nothing :to :replace")
И у меня есть таблица перевода:
(def translation-table {:name "Alice"
:age 19})
Я хочу заменить :name
в test-str
на "Алиса", :age
с 19, но не хотят заменять :not-interested
. Таблица длинная, и разные строки (подлежащие замене) содержат разные ключевые слова.
Учитывая таблицу перевода, каков тогда возможный систематический c способ замены подстроки? А именно, я хочу функцию replace-with-translation
:
(replace-with-translation test-str translation-table)
=> "I am a test string. Alice to replace, 19 to replace. And there are strange symbols in this string. And here are the keyword shall not modify, such as :not-interested."
(replace-with-translation another-test-str translation-table)
=> ":nothing :to :replace"
(replace-with-translation test-str {})
=> "I am a test string. :name to replace, :age to replace. And there are strange symbols in this string. And here are the keyword shall not modify, such as :not-interested."