0Pricing
Ruby Academy · Lezione

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 s

Sostituire 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 result

Convertire 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 title

Sostituzione 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 out

Verifica rapida

Qual è la differenza tra sub e gsub?

Riepilogo: sostituzione

Ha imparato a trasformare le stringhe con i modelli:

  • sub sostituisce la prima corrispondenza, gsub tutte 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

  1. Literals delle espressioni regolari
  2. Corrispondenza e cattura
  3. Sostituzione
  4. Gruppi denominati e ancoraggi
← Torna a Ruby Academy