Tekst zoeken en vervangen

Clojure:
Tekst zoeken en vervangen

Hoe:

In Clojure gebruiken we de functie clojure.string/replace om tekst te zoeken en te vervangen. Laten we meteen ter zake komen met wat code:

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

;; Basisvervanging
(str/replace "I like apples" "apples" "oranges")
;; => "I like oranges"

;; Het gebruik van een reguliere expressie om alle klinkers te vervangen
(str/replace "Hello, World!" "[AEIOUaeiou]" "*")
;; => "H*ll*, W*rld!"

;; Vervanging met een functie voor dynamische veranderingen
(str/replace "I have 2 apples and 5 bananas"
             #"\d+"
             (fn [match] (str (inc (Integer/parseInt match)))))
;; => "I have 3 apples and 6 bananas"

Zo simpel is het. Draai het, en je ziet de transformaties direct in je REPL.

Diepere Duik

Tekst zoeken en vervangen is niet nieuw. Het is al oud in de informatica. We hebben het van vroege editors zoals sed in Unix. Sindsdien zijn we een lange weg gekomen.

Clojure, dat op de JVM draait, betekent dat je de kracht van Java’s reguliere expressies onder de motorkap hebt. Wat prestaties betreft, is het handig voor snelle scripts, maar onthoud dat overmatig gebruik bij grootschalige tekstverwerking de prestaties kan schaden.

Wat betreft alternatieven, naast clojure.string/replace, zijn er op regex-gebaseerde bibliotheken of zelfs het schrijven van je eigen functie als je avontuurlijk aangelegd bent. Denk aan replace-first als je slechts een eenmalige wijziging nodig hebt.

Functioneel gezien betekent Clojure’s benadering van onveranderlijkheid dat elke vervanging resulteert in een nieuwe string. Geen veranderlijke strings betekent minder bugs en verrassingen.

Zie Ook

Om dieper in te duiken, bekijk deze bronnen: