Ruby Academy · Lektion

Substitution

gsub med mönster.

Lektion 3 av 413 steg

Substitution är en gratis lektion i Ruby Academy på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Ruby Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Ruby Academy innehåller totalt 4 lektioner.

Ersätta text med sub

String#sub ersätter den första matchningen av ett mönster med en ersättningssträng. Den ursprungliga strängen ändras inte; en ny sträng returneras.

s = 'hello world'
puts(s.sub(/world/, 'Ruby'))
puts s

Ersätta alla med gsub

gsub betyder global ersättning. Den ersätter varje matchning, inte bara den första.

puts('a-b-c-d'.gsub(/-/, '_'))
puts('one two two'.gsub(/two/, 'three'))

Mönster vid ersättning

Det första argumentet till gsub kan vara ett fullständigt regex, så att ni kan matcha flexibla mönster i stället för fast text.

puts('id42 id7 id100'.gsub(/\d+/, '#'))
puts('a1b2c3'.gsub(/[0-9]/, '*'))

Bakåtreferenser i ersättningar

I ersättningssträngen kan ni hänvisa till fångade grupper med \1, \2 och så vidare.

puts('2026-05-30'.gsub(/(\d{4})-(\d{2})-(\d{2})/, '\3/\2/\1'))

Bakåtreferens till hela matchningen

\0 eller \& hänvisar till hela den matchade texten, vilket är användbart när matchningar ska omslutas.

puts('cat dog'.gsub(/\w+/, '[\0]'))

Blockvariant av gsub

gsub accepterar ett block. Varje matchning skickas in och blockets returvärde blir ersättningen. På så sätt kan ni beräkna ersättningar dynamiskt.

result = 'a1 b2 c3'.gsub(/\d/) { |d| (d.to_i * 10).to_s }
puts result

Ändra matchningar till versaler

Blockvarianten gör omvandlingar enkla. Här gör vi den första bokstaven i varje ord till versal.

title = 'the great escape'.gsub(/\w+/) { |w| w.capitalize }
puts title

Ersättning med Hash

Om ni skickar en Hash som det andra argumentet slås varje matchning upp som en nyckel och ersätts med dess värde. Det passar utmärkt för översättningskartor.

map = { 'cat' => 'kedi', 'dog' => 'kopek' }
puts('cat and dog'.gsub(/cat|dog/, map))

Varianter som ändrar på plats

sub! och gsub! ändrar strängen på plats och returnerar nil om ingen ändring gjordes.

s = 'hello'
s.gsub!(/l/, 'L')
puts s
puts(s.gsub!(/z/, 'x').inspect)

Ta bort text

Om ni vill ta bort matchningar ersätter ni dem med en tom sträng.

puts('h e l l o'.gsub(/\s/, ''))
puts('price: $42'.gsub(/[^0-9]/, ''))

Bakåtreferenser till namngivna grupper

Ni kan namnge grupper med (?<name>...) och hänvisa till dem i ersättningen med \k<name>.

out = 'John Smith'.gsub(/(?<first>\w+) (?<last>\w+)/, '\k<last>, \k<first>')
puts out

Snabbtest

Vad är skillnaden mellan sub och gsub?

Sammanfattning: ersättning

Ni har lärt er att omvandla strängar med mönster:

  • sub ersätter den första matchningen och gsub ersätter alla matchningar
  • Bakåtreferenserna \1 och \& i ersättningar
  • Blockvarianten beräknar ersättningar dynamiskt
  • Hash-argumentet mappar matchningar till värden
  • sub! och gsub! ändrar strängen på plats
puts('foo bar baz'.gsub(/b\w+/) { |w| w.upcase })
Gratis att börja

Lär dig Ruby med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
29
Lektioner
109

Vanliga frågor

Är lektionen ”Substitution” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Ruby Academy, inklusive ”Substitution”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Ruby Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Substitution”?

gsub med mönster. Ni övar på Ruby Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Ruby Academy?

Du behöver inga förkunskaper. Utbildningen i Ruby Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Substitution”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Ruby Academy-lektionen?

Ja. Varje Ruby Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Reguljära uttrycksliteraler
  2. Matchning och fångst
  3. Substitution
  4. Namngivna grupper och ankare
← Tillbaka till Ruby Academy