Eliminazione di caratteri che corrispondono a un pattern

Clojure:
Eliminazione di caratteri che corrispondono a un pattern

How to:

In Clojure, usiamo clojure.string/replace per sostituire i caratteri indesiderati. Ecco come:

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

; Elimina tutti i numeri da una stringa
(defn delete-digits [s]
  (str/replace s #"\d+" ""))

; Uso della funzione
(println (delete-digits "Terza1Class3"))

Output:

TerzaClass

Un altro esempio per rimuovere le vocali:

; Elimina tutte le vocali da una stringa
(defn delete-vowels [s]
  (str/replace s #"[aeiouAEIOU]" ""))

; Uso della funzione
(println (delete-vowels "Ciao Mondo"))

Output:

C Mnd

Deep Dive

La funzione clojure.string/replace esiste da molte versioni. È basata su Java String.replaceAll, che usa espressioni regolari. In alternativa, puoi usare reduce con una sequenza di caratteri o altre funzioni core di Clojure.

Per esempio, con reduce:

(defn delete-chars [s chars-pattern]
  (reduce (fn [acc char]
            (str/replace acc (str char) ""))
          s
          chars-pattern))

(println (delete-chars "Hello World" "lo"))

Output:

He Wrd

Dettagli di implementazione: str/replace è veloce e potente grazie alle regex. C’è da fare attenzione con pattern complessi per evitare un uso eccessivo di risorse.

See Also