Удаление символов, соответствующих шаблону

Clojure:
Удаление символов, соответствующих шаблону

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

Чтобы удалить символы, используя шаблон в Clojure, вы применяете регулярные выражения с функциями re-seq, re-find или re-matches в сочетании с clojure.string/replace.

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

;; Удаление всех цифр из строки
(str/replace "He110 W0rld" #"\d+" "")
;; => "He Wrd"

;; Удаление определенных специальных символов
(str/replace "Hello, World! #Clojure" #"[,!#]" "")
;; => "Hello World Clojure"

;; Оставить только словесные символы и пробелы
(str/replace "[email protected]" #"[^\w\s]+" "")
;; => "EmailExamplecom"

Подробнее

Clojure, отражая своё наследие Lisp, отличается в символической обработке, делая работу с шаблонами простой. Представленный в 2007 году, он опирается на возможности Java Virtual Machine (JVM), используя мощный класс Pattern от Java для регулярных выражений.

Альтернативы регулярным выражениям включают в себя ручную итерацию и манипуляцию со строками, но они часто бывают более многословными и подвержены ошибкам. Библиотеки вроде clojure.spec могут помочь валидировать и приводить данные в соответствие с шаблонами без непосредственного удаления.

Операции удаления обычно очень эффективны, но нужно быть внимательным к сложности регулярных выражений, которые могут превратить задачу O(n) в гораздо худшую. Неизменяемость строк в Clojure означает, что каждый replace создаёт новую строку, что стоит учитывать для приложений, чувствительных к памяти.

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