Sostituzione
gsub con pattern
Sostituzione è una lezione Ruby Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Ruby Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Ruby Academy include 4 lezioni in totale.
Sostituire il testo con sub
String#sub sostituisce la prima corrispondenza di un modello con una stringa sostitutiva. La stringa originale non viene modificata; ne viene restituita una nuova.
s = 'hello world'
puts(s.sub(/world/, 'Ruby'))
puts sSostituire tutto con gsub
gsub significa sostituzione globale. Sostituisce tutte le corrispondenze, non soltanto la prima.
puts('a-b-c-d'.gsub(/-/, '_'))
puts('one two two'.gsub(/two/, 'three'))Modelli nella sostituzione
Il primo argomento di gsub può essere una regex completa, consentendo di trovare corrispondenze con modelli flessibili anziché con testo fisso.
puts('id42 id7 id100'.gsub(/\d+/, '#'))
puts('a1b2c3'.gsub(/[0-9]/, '*'))Backreference nella sostituzione
Nella stringa sostitutiva è possibile fare riferimento ai gruppi catturati con \1, \2 e così via.
puts('2026-05-30'.gsub(/(\d{4})-(\d{2})-(\d{2})/, '\3/\2/\1'))La backreference della corrispondenza completa
\0 o \& fa riferimento all'intero testo corrispondente ed è utile per racchiudere le corrispondenze.
puts('cat dog'.gsub(/\w+/, '[\0]'))La forma a blocco di gsub
gsub accetta un blocco. Ogni corrispondenza viene passata al blocco e il valore restituito dal blocco diventa la sostituzione. In questo modo è possibile calcolare dinamicamente le sostituzioni.
result = 'a1 b2 c3'.gsub(/\d/) { |d| (d.to_i * 10).to_s }
puts resultConvertire le corrispondenze in maiuscolo
La forma a blocco semplifica le trasformazioni. In questo esempio si mette in maiuscolo ogni parola.
title = 'the great escape'.gsub(/\w+/) { |w| w.capitalize }
puts titleSostituzione tramite Hash
Se si passa un Hash come secondo argomento, ogni corrispondenza viene cercata come chiave e sostituita con il relativo valore. È ideale per le mappe di traduzione.
map = { 'cat' => 'kedi', 'dog' => 'kopek' }
puts('cat and dog'.gsub(/cat|dog/, map))Versioni con modifica in loco
sub! e gsub! modificano la stringa in loco e restituiscono nil se non è stata apportata alcuna modifica.
s = 'hello'
s.gsub!(/l/, 'L')
puts s
puts(s.gsub!(/z/, 'x').inspect)Rimuovere il testo
Per eliminare le corrispondenze, le si sostituisce con una stringa vuota.
puts('h e l l o'.gsub(/\s/, ''))
puts('price: $42'.gsub(/[^0-9]/, ''))Backreference a gruppi denominati
È possibile assegnare un nome ai gruppi con (?<name>...) e farvi riferimento nella sostituzione usando \k<name>.
out = 'John Smith'.gsub(/(?<first>\w+) (?<last>\w+)/, '\k<last>, \k<first>')
puts outVerifica rapida
Qual è la differenza tra sub e gsub?
Riepilogo: sostituzione
Ha imparato a trasformare le stringhe con i modelli:
subsostituisce la prima corrispondenza,gsubtutte le corrispondenze- Backreference
\1,\&nelle sostituzioni - La forma a blocco calcola dinamicamente le sostituzioni
- L'argomento Hash associa le corrispondenze ai valori
sub!/gsub!modificano la stringa in loco
puts('foo bar baz'.gsub(/b\w+/) { |w| w.upcase })Domande Frequenti
La lezione «Sostituzione» è gratuita?
Sì — il testo completo di «Sostituzione» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Ruby Academy, passa a CoddyKit PRO. Il corso Ruby Academy include 4 lezioni in totale.
Cosa imparerò in «Sostituzione»?
gsub con pattern Eserciti Ruby Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Ruby Academy?
Non è richiesta alcuna esperienza precedente. Ruby Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Sostituzione»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Ruby Academy?
Sì. Ogni lezione Ruby Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Literals delle espressioni regolari
- Corrispondenza e cattura
- Sostituzione
- Gruppi denominati e ancoraggi