3 fantastiske måder at bruge Rubys Gsub-metode på
On oktober 4, 2021 by adminLad os tale om Rubys gsub
-metode.
Først skal du bruge en streng for at lege med denne metode.
Hvorfor?
For du bruger gsub
på en streng for at erstatte dele af den.
Faktisk set:
Det “sub” i “gsub” står for “substitute” (erstatning), og “g” står for “global”.
Har du din streng?
Godt.
Hvis ikke, kan du låne min.
Her er den:
str = "white chocolate"
Lad os sige, at vi ønsker at erstatte “white” med “dark”.
Her er hvordan:
str.gsub("white", "dark")
Det vil sige:
Givet strengen str
, giv den ordre til at erstatte ALLE forekomster af det første ord (white
) med det andet ord (dark
).
Det betyder, at vi kommer til at spise meget bedre chokolade.
Oh vent, det er bare en streng.
Det kan vi ikke spise!
Anyway…
Rubys gsub
metode kan gøre meget mere end simpel substitution.
Lad os se et par eksempler.
Replace Patterns With A Regular Expression
Replacering af et enkelt ord er fint.
Men hvad nu, hvis du kunne erstatte et mønster?
Som:
Et årstal, en e-mail-adresse, et telefonnummer osv.
Det kan du!
Her er et eksempel:
"a1".gsub(/\d/, "2")# "a2"
Det første argument er et regulært udtryk, og det er for meget at dække her.
Men det er et mønstermatchende sprog.
I dette tilfælde leder \d
efter tal, som f.eks. “1” i “a1”.
Du kan også gøre dette:
"a1".gsub(/(\w)(\d)/, '')
Hvilket resulterer i:
"1a"
Vi har byttet om på rækkefølgen!
Dette fungerer ved hjælp af en funktion, der hedder “capture groups”.
Vi kan bruge grupperne som for den første gruppe,
for den anden gruppe osv.
Grupper oprettes med parenteser.
Advanced Gsub With Blocks
Det bliver rigtig interessant, når du begynder at bruge gsub med en blok.
Hvorfor?
For inden for en blok kan du bruge logik til at beslutte, hvordan noget skal erstattes.
I stedet for at bruge en statisk værdi.
For eksempel:
"dog".gsub(/\w+/) { |animal| animal == "dog" ? "cat" : "dog" }
Vi finder dyret med \w+
, som betyder “et eller flere alfanumeriske tegn”.
Dernæst:
- Hvis det er en “hund”, erstatter vi det med “kat”
- Hvis ordet er noget andet, erstatter vi det med “hund”
Denne slags logik er ikke mulig med en statisk værdi, gsub’s 2. parameter.
Erstat flere udtryk med en hash
Hvis du har en liste over substitutioner, der skal foretages, kan du bruge en hash.
Som denne:
colors = { "B" => "blue", "G" => "green", "R" => "red"}
Dette fungerer som en oversættelsesordbog, hvor nøglerne erstattes af deres værdier.
Her er et eksempel:
"BBBGR".gsub(/\w/, colors)
Hvilket resulterer i:
"bluebluebluegreenred"
Sørg for, at dit 1. argument passer til nøglerne.
I dette tilfælde matcher \w
individuelle tegn, så den vil matche “B” og derefter erstatte det med “blue”.
Summary
Du har lært om gsub-metoden i Ruby! Det er en kraftfuld metode, der giver dig mulighed for at erstatte eller erstatte tegn i en streng.
Den har flere anvendelsesmuligheder:
- Fjernelse af ugyldige tegn (ved at gøre det 2. argument til en tom streng)
- Erstatning af pladsholdere & akronymer med deres fulde værdier
- Anvendelse af mønstre & logik til at ændre en streng
Nu er det din tur til at øve dig med denne metode, så du kan få din nye viden til at sidde fast.
Tak for læsning 🙂
Skriv et svar