Suchen und Ersetzen von Text

Clojure:
Suchen und Ersetzen von Text

So geht’s:

;; Text ersetzen mit `clojure.string/replace`
(require '[clojure.string :as str])

;; Einfaches Beispiel: Ersetzt "Welt" durch "Clojure-Welt"
(str/replace "Hallo Welt" "Welt" "Clojure-Welt")
;; => "Hallo Clojure-Welt"

;; Mit regulären Ausdrücken: Ersetzt alle Ziffern durch "#"
(str/replace "R2D2 und C3PO" #"\d" "#")
;; => "R#D# und C#PO"

;; Groß- und Kleinschreibung ignorieren:
(str/replace "Clojure ist toll" #"(?i)clojure" "LISP")
;; => "LISP ist toll"

Deep Dive

Die Such- und Ersetzungsfunktion in Clojure basiert auf Java’s String Klassenmethoden, erweitert um Clojure’s Unveränderlichkeitsprinzipien. Historisch gesehen haben fast alle Programmiersprachen solche Funktionen, da Textverarbeitung zu den grundlegenden Aufgaben gehört. Alternativen in anderen Sprachen sind beispielsweise Perl’s mächtige Textverarbeitungsmöglichkeiten oder Python’s re Modul. In Clojure hebt clojure.string/replace sich durch seine Einfachheit und die nahtlose Integration von regulären Ausdrücken hervor.

Die Funktion clojure.string/replace kann zwei Arten von Argumenten für den Suchstring annehmen:

  1. Ein einfacher String, der wörtlich genommen wird.
  2. Ein regulärer Ausdruck, der eine vielseitige Suche ermöglicht, einschließlich pattern matching und optionen wie case insensitivity.

Die Unveränderlichkeit von Daten in Clojure bedeutet, dass das Original nicht verändert wird, sondern eine neue Zeichenkette zurückgegeben wird.

See Also