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
создаёт новую строку, что стоит учитывать для приложений, чувствительных к памяти.