3 fantastici modi di usare il metodo Gsub di Ruby
Il Ottobre 4, 2021 da adminParliamo del metodo gsub
di Ruby.
Perché?
Perché si usa gsub
su una stringa per sostituire parti di essa.
In effetti:
La “sub” in “gsub” sta per “substitute”, e la “g” sta per “global”.
Hai la tua stringa?
Bene.
Se no, puoi prendere in prestito la mia.
Ecco:
str = "white chocolate"
Diciamo che vogliamo sostituire “white” con “dark”.
Ecco come:
str.gsub("white", "dark")
Questo sta dicendo:
Data la stringa str
, comanda di sostituire TUTTE le occorrenze della prima parola (white
) con la seconda parola (dark
).
Il che significa che possiamo mangiare del cioccolato molto migliore.
Aspetta, è solo una stringa.
Non possiamo mangiarlo!
Ad ogni modo…
Il metodo gsub
di Ruby può fare molto di più della semplice sostituzione.
Vediamo qualche esempio.
Sostituire i pattern con un’espressione regolare
Sostituire una singola parola va bene.
Ma se si potesse sostituire un modello?
Come:
Un anno, un indirizzo email, un numero di telefono, ecc.
Si può!
Ecco un esempio:
"a1".gsub(/\d/, "2")# "a2"
Il primo argomento è un’espressione regolare, ed è troppo da coprire qui.
Ma è un linguaggio di pattern-matching.
In questo caso, \d
cerca numeri, come l'”1″ in “a1”.
Puoi anche fare così:
"a1".gsub(/(\w)(\d)/, '')
Che ha come risultato:
"1a"
Abbiamo cambiato l’ordine!
Questo funziona usando una caratteristica chiamata “gruppi di cattura”.
Possiamo usare i gruppi come per il primo gruppo,
per il secondo gruppo, ecc.
I gruppi sono creati con parentesi.
Gsub avanzato con i blocchi
Le cose si fanno davvero interessanti quando si inizia a usare gsub con un blocco.
Perché?
Perché all’interno di un blocco si può usare la logica per decidere come sostituire qualcosa.
Invece di usare un valore statico.
Per esempio:
"dog".gsub(/\w+/) { |animal| animal == "dog" ? "cat" : "dog" }
Troviamo l’animale con \w+
, che significa “uno o più caratteri alfanumerici”.
Poi:
- Se è un “cane”, lo sostituiamo con “gatto”
- Se la parola è qualsiasi altra cosa, la sostituiamo con “cane”
Questo tipo di logica non è possibile con un valore statico, il 2° parametro di gsub.
Sostituisci più termini con un hash
Se hai una lista di sostituzioni da fare puoi usare un hash.
Come questo:
colors = { "B" => "blue", "G" => "green", "R" => "red"}
Questo funziona come un dizionario di traduzione, dove le chiavi saranno sostituite dai loro valori.
Ecco un esempio:
"BBBGR".gsub(/\w/, colors)
Che risulta in:
"bluebluebluegreenred"
Assicurati che il tuo primo argomento corrisponda alle chiavi.
In questo caso, \w
corrisponde a singoli caratteri, quindi corrisponderà a “B” e lo sostituirà con “blue”.
Sommario
Hai imparato il metodo gsub in Ruby! È un metodo potente che ti permette di sostituire, o sostituire i caratteri all’interno di una stringa.
Ha molteplici usi:
- Rimuovere i caratteri non validi (rendendo il secondo argomento una stringa vuota)
- Sostituire i segnaposto & con i loro valori completi
- Utilizzare la logica dei pattern & per cambiare una stringa
Ora è il tuo turno di fare pratica con questo metodo in modo che le tue nuove conoscenze possano essere applicate.
Grazie per aver letto 🙂
Lascia un commento