3 fantastiska sätt att använda Rubys Gsub-metod
On oktober 4, 2021 by adminLåt oss prata om Rubys gsub
-metod.
För det första behöver du en sträng för att använda den här metoden.
Varför?
För att du använder gsub
på en sträng för att ersätta delar av den.
Faktiskt sett:
Det ”sub” i ”gsub” står för ”substitute” (ersättning) och ”g” står för ”global”.
Har du din sträng?
Godt.
Om inte kan du låna min.
Här är den:
str = "white chocolate"
Vad sägs om att vi vill ersätta ”white” med ”dark”.
Så här gör vi:
str.gsub("white", "dark")
Det här säger:
Givet strängen str
, beordra den att ersätta ALLA förekomster av det första ordet (white
) med det andra ordet (dark
).
Det betyder att vi får äta mycket bättre choklad.
Oh vänta, det är bara en sträng.
Vi kan inte äta det där!
Annorlunda…
Rubys gsub
-metod kan göra mycket mer än enkel substitution.
Låt oss se några exempel.
Replacera mönster med ett reguljärt uttryck
Replacera ett enda ord är bra.
Men tänk om du kunde ersätta ett mönster?
Som:
Ett årtal, en e-postadress, ett telefonnummer osv.
Det kan du!
Här är ett exempel:
"a1".gsub(/\d/, "2")# "a2"
Det första argumentet är ett reguljärt uttryck, och det är för mycket att ta upp här.
Men det är ett mönstermatchningsspråk.
I det här fallet letar \d
efter siffror, som ”1” i ”a1”.
Du kan också göra så här:
"a1".gsub(/(\w)(\d)/, '')
Vilket resulterar i:
"1a"
Vi har bytt ordning!
Detta fungerar med hjälp av en funktion som kallas ”capture groups”.
Vi kan använda grupperna som för den första gruppen,
för den andra gruppen osv.
Grupper skapas med parenteser.
Advanced Gsub With Blocks
Det blir riktigt intressant när du börjar använda gsub med ett block.
Varför?
För att du inom ett block kan använda logik för att bestämma hur något ska ersättas.
Istället för att använda ett statiskt värde.
Till exempel:
"dog".gsub(/\w+/) { |animal| animal == "dog" ? "cat" : "dog" }
Vi hittar djuret med \w+
, vilket betyder ”ett eller flera alfanumeriska tecken”.
Därefter:
- Om det är en ”hund” ersätter vi det med ”katt”
- Om ordet är något annat ersätter vi det med ”hund”
Den här typen av logik är inte möjlig med ett statiskt värde, gsubs andra parameter.
Ersätt flera termer med en hash
Om du har en lista med ersättningar att göra kan du använda en hash.
Som den här:
colors = { "B" => "blue", "G" => "green", "R" => "red"}
Detta fungerar som en översättningsordbok, där nycklarna ersätts med sina värden.
Här är ett exempel:
"BBBGR".gsub(/\w/, colors)
Vilket resulterar i:
"bluebluebluegreenred"
Säkerställ att ditt 1:a argument matchar nycklarna.
I det här fallet matchar \w
enskilda tecken, så det kommer att matcha ”B” och sedan ersätta det med ”blue”.
Sammanfattning
Du har lärt dig om metoden gsub i Ruby! Det är en kraftfull metod som låter dig ersätta eller byta ut tecken i en sträng.
Den har flera användningsområden:
- För att ta bort ogiltiga tecken (genom att göra det andra argumentet till en tom sträng)
- Ersätt platshållare & akronymer med deras fullständiga värden
- Användning av mönster & logik för att ändra en sträng
Nu är det din tur att öva på den här metoden så att du kan få dina nya kunskaper att fastna.
Tack för att du läste 🙂
Lämna ett svar