Поиск и замена текста

Clojure:
Поиск и замена текста

Как это сделать:

В Clojure для поиска и замены текста мы используем функцию clojure.string/replace. Давайте сразу перейдем к коду:

(require '[clojure.string :as str])

;; Базовая замена
(str/replace "I like apples" "apples" "oranges")
;; => "I like oranges"

;; Использование регулярного выражения для замены всех гласных
(str/replace "Hello, World!" "[AEIOUaeiou]" "*")
;; => "H*ll*, W*rld!"

;; Замена с функцией для динамических изменений
(str/replace "I have 2 apples and 5 bananas"
             #"\d+"
             (fn [match] (str (inc (Integer/parseInt match)))))
;; => "I have 3 apples and 6 bananas"

Всё просто. Запустите это, и вы сразу увидите преобразования прямо в вашем REPL.

Подробнее

Поиск и замена текста – это не новинка. Это старые вычислительные технологии. Мы унаследовали их от ранних редакторов, таких как sed в Unix. С тех пор мы проделали долгий путь.

Clojure, работающий на JVM, означает, что у вас под капотом есть мощь регулярных выражений Java. С точки зрения производительности, это прекрасно для быстрых скриптов, но помните, что чрезмерное использование при масштабной обработке текста может снизить производительность.

Что касается альтернатив, помимо clojure.string/replace, есть библиотеки, основанные на регулярных выражениях, или даже написание вашей собственной функции, если вы чувствуете в себе смелость. Подумайте о replace-first, если вам нужно однократное изменение.

С функциональной точки зрения, подход Clojure к неизменяемости означает, что каждая замена приводит к созданию новой строки. Отсутствие изменяемых строк означает меньше ошибок и сюрпризов.

Смотрите также

Чтобы углубиться, ознакомьтесь с этими ресурсами: