3 Awesome Ways To Use Ruby’s Gsub Method
On oktober 4, 2021 by adminLaten we het eens hebben over Ruby’s gsub
method.
Vooreerst heb je een string nodig om met deze methode te spelen.
Waarom?
Omdat je gsub
op een string gebruikt om delen ervan te vervangen.
In feite:
De “sub” in “gsub” staat voor “substitute”, en de “g” staat voor “global”.
Heb je jouw string?
Goed.
Zo niet, dan kun je de mijne lenen.
Hier is het:
str = "white chocolate"
Laten we zeggen dat we “wit” willen vervangen door “donker”.
Hier staat het:
str.gsub("white", "dark")
Dit betekent:
Gegeven aan de string str
, geef het commando om ALLE occurrences van het eerste woord (white
) te vervangen door het tweede woord (dark
).
Wat betekent dat we veel betere chocolade kunnen eten.
Oh wacht, het is maar een string.
Dat kunnen we niet eten!
Hoe dan ook…
Ruby’s gsub
methode kan veel meer dan simpele substitutie.
Laten we een paar voorbeelden zien.
Vervang patronen met een Reguliere Expressie
Het vervangen van een enkel woord is prima.
Maar wat als je een patroon zou kunnen vervangen?
Zoals:
Een jaartal, een emailadres, een telefoonnummer, etc.
Dat kan!
Hier is een voorbeeld:
"a1".gsub(/\d/, "2")# "a2"
Het eerste argument is een reguliere expressie, en het is te veel om hier te behandelen.
Maar het is een patroon-matching taal.
In dit geval, \d
zoekt naar getallen, zoals de “1” in “a1”.
U kunt dit ook doen:
"a1".gsub(/(\w)(\d)/, '')
Wat resulteert in:
"1a"
We hebben de volgorde verwisseld!
Dit werkt door gebruik te maken van een functie genaamd “capture groups”.
We kunnen de groepen gebruiken als voor de eerste groep,
voor de tweede groep, enz.
Groepen worden gemaakt met haakjes.
Gevorderde Gsub met blokken
Het wordt pas echt interessant als je gsub met een blok gaat gebruiken.
Waarom?
Omdat je binnen een blok logica kunt gebruiken om te beslissen hoe je iets vervangt.
In plaats van een statische waarde te gebruiken.
Voorbeeld:
"dog".gsub(/\w+/) { |animal| animal == "dog" ? "cat" : "dog" }
We vinden het dier met \w+
, wat betekent “een of meer alfanumerieke tekens”.
Dan:
- Als het een “hond” is, vervangen we het door “kat”
- Als het een ander woord is, vervangen we het door “hond”
Dit soort logica is niet mogelijk met een statische waarde, gsub’s 2e parameter.
Vervang meerdere termen met een hash
Als je een lijst met vervangingen moet maken, kun je een hash gebruiken.
Zoals deze:
colors = { "B" => "blue", "G" => "green", "R" => "red"}
Dit werkt als een vertaalwoordenboek, waar de sleutels worden vervangen door hun waarden.
Hier is een voorbeeld:
"BBBGR".gsub(/\w/, colors)
Wat resulteert in:
"bluebluebluegreenred"
Zorg ervoor dat je 1e argument overeenkomt met de sleutels.
In dit geval komt \w
overeen met individuele karakters, dus het zal overeenkomen met “B” en het vervolgens vervangen door “blue”.
Samenvatting
Je hebt geleerd over de gsub methode in Ruby! Het is een krachtige methode waarmee je karakters in een string kunt vervangen, of substitueren.
Het heeft meerdere toepassingen:
- Vervangen van ongeldige tekens (door van het 2e argument een lege string te maken)
- Vervangen van placeholders & acroniemen door hun volledige waarden
- Gebruik van patronen & logica om een string te veranderen
Nu is het jouw beurt om te oefenen met deze methode zodat je je nieuwe kennis kunt laten beklijven.
Bedankt voor het lezen 🙂
Geef een antwoord