3 fantasztikus mód a Ruby Gsub módszer használatára
On október 4, 2021 by adminBeszéljünk a Ruby gsub
módszeréről.
Először is, szükséged lesz egy stringre, hogy játszhass ezzel a módszerrel.
Miért?
Mert a gsub
-t egy karakterláncon használjuk, hogy annak részeit helyettesítsük.
Tény:
A “sub” a “gsub”-ban a “substitute”-t jelenti, a “g” pedig a “global”-t.
Megvan a te stringed?
Jó.
Ha nem, akkor kölcsönkérheted az enyémet.
Itt van:
str = "white chocolate"
Tegyük fel, hogy a “white” szót “dark”-ra akarjuk cserélni.
Íme, hogyan:
str.gsub("white", "dark")
Ez azt jelenti:
A str
karakterláncot megadva parancsolja meg, hogy az első szó (white
) MINDEN előfordulását helyettesítse a második szóval (dark
).
Ez azt jelenti, hogy sokkal jobb csokoládét ehetünk.
Várjunk csak, ez csak egy karakterlánc.
Azt nem ehetjük meg!
Mindegy…
A Ruby gsub
módszere sokkal többre képes az egyszerű helyettesítésnél.
Lássunk néhány példát.
Minták helyettesítése szabályos kifejezéssel
Egyetlen szó helyettesítése jó.
De mi lenne, ha egy mintát is helyettesíthetnénk?
Mint például:
Egy évszámot, egy e-mail címet, egy telefonszámot stb.
Megtehetjük!
Itt egy példa:
"a1".gsub(/\d/, "2")# "a2"
Az első argumentum egy reguláris kifejezés, és ez túl sok ahhoz, hogy itt leírjuk.
De ez egy mintaillesztő nyelv.
Ez esetben a \d
számokat keres, például az “1”-t az “a1”-ben.
Ezt is megteheted:
"a1".gsub(/(\w)(\d)/, '')
Az eredmény:
"1a"
Megváltoztattuk a sorrendet!
Ez a “capture groups” nevű funkció segítségével működik.
A csoportokat úgy használhatjuk, hogy az első csoporthoz,
a második csoporthoz, stb.
A csoportokat zárójelekkel hozzuk létre.
Továbbfejlesztett gsub blokkokkal
A dolgok akkor válnak igazán érdekessé, amikor elkezdjük használni a gsub-ot egy blokkal.
Miért?
Mert egy blokkon belül logikával eldönthetjük, hogyan helyettesítsünk valamit.
Ahelyett, hogy statikus értéket használnánk.
Például:
"dog".gsub(/\w+/) { |animal| animal == "dog" ? "cat" : "dog" }
Az állatot a \w+
-vel találjuk meg, ami “egy vagy több alfanumerikus karaktert” jelent.
Ezután:
- Ha “kutya”, akkor “macskával”
- Ha a szó bármi más, akkor “kutyával”
Ez a fajta logika nem lehetséges statikus értékkel, a gsub 2. paraméterével.
Második kifejezés helyettesítése egy hash segítségével
Ha van egy lista a helyettesítésekről, akkor használhatunk egy hash-t.
Mint például ez:
colors = { "B" => "blue", "G" => "green", "R" => "red"}
Ez úgy működik, mint egy fordítási szótár, ahol a kulcsokat az értékeikkel helyettesítjük.
Itt egy példa:
"BBBGR".gsub(/\w/, colors)
Az eredmény:
"bluebluebluegreenred"
Vigyázz, hogy az 1. argumentumod megfeleljen a kulcsoknak.
Ez esetben a \w
egyes karakterekre illeszkedik, tehát a “B” betűre fog illeszkedni, majd “blue”-ra fogja helyettesíteni.
Összefoglaló
Megtanultad a gsub metódust a Ruby-ban! Ez egy hatékony módszer, amely lehetővé teszi a karakterek cseréjét, vagy helyettesítését egy karakterlánc belsejében.
Ez többféleképpen is használható:
- Az érvénytelen karakterek eltávolítása (a 2. argumentum üres karakterlánccá alakításával)
- A helyőrző & rövidítések helyettesítése a teljes értékükkel
- Minták &logika használata a karakterlánc megváltoztatására
Most rajtad a sor, hogy gyakorolj ezzel a módszerrel, hogy az új ismereteid megragadjanak.
Köszönjük az olvasást 🙂
Vélemény, hozzászólás?