Clojure:
Видалення лапок зі строки
Як це зробити:
У Clojure рядки є незмінними, тому коли ми говоримо про “видалення лапок”, ми насправді говоримо про створення нового рядка без лапок. Ось основні моменти використання clojure.string/replace
:
(require '[clojure.string :as str])
; Давайте позбудемося подвійних лапок
(defn remove-double-quotes [s]
(str/replace s #"\"" ""))
; І вигонимо одинарні лапки
(defn remove-single-quotes [s]
(str/replace s #"\'" ""))
; Приклад використання:
(remove-double-quotes "\"Привіт, Світ!\"") ; => "Привіт, Світ!"
(remove-single-quotes "'Привіт, Світ!'") ; => "Привіт, Світ!"
Хочете впоратися з одинарними та подвійними лапками одним махом? Зверніть увагу на це:
(defn remove-quotes [s]
(str/replace s #"[\"\']" ""))
; Приклад використання:
(remove-quotes "\"Привіт, 'Clojure' Світ!\"") ; => "Привіт, Clojure Світ!"
Поглиблений Розгляд
Колись, коли дані були більш заплутаними, ніж дитяча кімната, лапки в рядках були нормою для позначення тексту. Але з розвитком комп’ютерних наук лапки стали більше, ніж просто делімітатори тексту — вони почали виконувати синтаксичні ролі в мовах програмування.
Clojure, із його спадщиною Lisp, не використовує лапки так само, як деякі інші мови. Вони, безсумнівно, використовуються для позначення рядків, але також мають спеціальну роль у створенні літералів. Тим не менш, видалення лапок з рядків залишається вічним завданням.
Чому просто не вирізати кінці рядка? Ну, це припущення, що ваші лапки завжди обіймають початок і кінець вашого рядка, як пара надто ласкавих бабусь і дідусів. Реальні дані більш заплутані. Тут на допомогу приходять регулярні вирази (regex), які дозволяють цілитися в ці лапки, де б вони не ховалися.
Альтернативи? Звичайно, ви можете стати вишуканими з subs
, trim
, triml
, trimr
або навіть трансдьюсерами, якщо хочете похизуватися. Але replace
з regex - це як принести світловий меч на бійку з ножами - це прямо до справи.
Дивіться також
Якщо ваш мозок прагне до більшого знання про маніпуляції з рядками в Clojure, ці підказки можуть допомогти:
- ClojureDocs про
clojure.string/replace
: https://clojuredocs.org/clojure.string/replace - Регулярні вирази в Clojure: https://clojure.org/guides/learn/syntax#_regex
- Java-інтероперабельність для роботи з рядками (адже Clojure працює на JVM): https://clojure.org/reference/java_interop#_working_with_strings
Не зупиняйтеся лише на видаленні лапок. У світі Clojure є ціле королівство магії рядків, яке чекає, щоб ви його відкрили.