Rimuovere le virgolette da una stringa

Clojure:
Rimuovere le virgolette da una stringa

Come fare:

In Clojure, le stringhe sono immutabili, quindi quando parliamo di “rimuovere le virgolette”, stiamo realmente parlando di creare una nuova stringa senza virgolette. Ecco l’essenziale usando clojure.string/replace:

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

; Diciamo addio alle virgolette doppie
(defn remove-double-quotes [s]
  (str/replace s #"\"" ""))

; E mandiamo via le virgolette singole
(defn remove-single-quotes [s]
  (str/replace s #"\'" ""))

; Esempio di utilizzo:
(remove-double-quotes "\"Ciao, Mondo!\"") ; => "Ciao, Mondo!"
(remove-single-quotes "'Ciao, Mondo!'")   ; => "Ciao, Mondo!"

Vuoi gestire sia le virgolette singole che quelle doppie in un colpo solo? Guarda qui:

(defn remove-quotes [s]
  (str/replace s #"[\"\']" ""))

; Esempio di utilizzo:
(remove-quotes "\"Ciao, 'Clojure' Mondo!\"") ; => "Ciao, Clojure Mondo!"

Approfondimento

Ai tempi in cui i dati erano più disordinati della camera di un bambino, le virgolette nelle stringhe erano la norma per denotare il testo. Ma con l’evoluzione dell’informatica, le virgolette sono diventate più che semplici delimitatori di testo: hanno assunto ruoli sintattici nei linguaggi di programmazione.

Clojure, con la sua eredità Lisp, non usa le virgolette allo stesso modo di alcuni altri linguaggi. Vengono sicuramente utilizzate per denotare stringhe, ma hanno anche un ruolo speciale nella creazione di letterali. Tuttavia, rimuovere le virgolette dalle stringhe rimane un compito senza tempo.

Perché non tagliare semplicemente le estremità di una stringa? Beh, questo presupporrebbe che le tue virgolette stiano sempre abbracciando l’inizio e la fine della tua stringa come una coppia di nonni eccessivamente affettuosi. I dati nel mondo reale sono più disordinati. Entra in gioco la regex (espressioni regolari), che ti permette di prendere di mira quelle virgolette indipendentemente da dove si nascondono.

Alternative? Certo, puoi diventare sofisticato con subs, trim, triml, trimr o anche i transducers se vuoi stupire. Ma replace con regex è come portare una spada laser a un duello con coltelli: va dritto al punto.

Vedi anche

Se il tuo cervello desidera ardentemente altre meraviglie della manipolazione delle stringhe in Clojure, questi spunti potrebbero aiutare:

Non fermarti alla rimozione delle virgolette. C’è tutto un mondo di magie con le stringhe là fuori in Clojure-land che aspetta di essere scoperto.