3 úžasné způsoby použití metody Gsub v Ruby
On 4 října, 2021 by adminPovíme si něco o metodě gsub
v Ruby.
Nejprve budete potřebovat řetězec, abyste si s touto metodou mohli hrát.
Proč?
Protože pomocí gsub
na řetězci nahrazujete jeho části.
V podstatě:
„Sub“ ve slově „gsub“ znamená „substitute“ a „g“ znamená „global“.
Máš svůj řetězec?
Dobře.
Jestliže ne, můžeš si půjčit můj.
Tady je:
str = "white chocolate"
Řekněme, že chceme nahradit „bílý“ za „tmavý“.
Takto:
str.gsub("white", "dark")
To znamená:
Dáme-li řetězec str
, přikážeme mu, aby nahradil VŠECHNY výskyty prvního slova (white
) druhým slovem (dark
).
To znamená, že budeme jíst mnohem lepší čokoládu.
Aha, počkat, vždyť je to jen řetězec.
To přece nemůžeme jíst!“
Ano tak či onak…
Metoda Ruby gsub
toho umí mnohem víc než jen prosté nahrazování.
Podívejme se na několik příkladů.
Záměna vzorů pomocí regulárního výrazu
Záměna jednoho slova je v pořádku.
Ale co kdybyste mohli nahradit vzor?
Například:
Rok, e-mailovou adresu, telefonní číslo atd.
Můžete!
Tady je příklad:
"a1".gsub(/\d/, "2")# "a2"
První argument je regulární výraz a je toho příliš mnoho na to, abychom se jím zde zabývali.
Je to ale jazyk pro porovnávání vzorů.
V tomto případě \d
hledá čísla, jako je „1“ v „a1“.
Můžete také udělat toto:
"a1".gsub(/(\w)(\d)/, '')
Což má za následek:
"1a"
Prohodili jsme pořadí!“
Funguje to pomocí funkce zvané „skupiny zachycení“.
Můžeme použít skupiny jako pro první skupinu,
pro druhou skupinu atd.
Skupiny se vytvářejí pomocí závorek.
Pokročilý gsub s bloky
Věci začnou být opravdu zajímavé, když začnete používat gsub s blokem.
Proč?
Protože v rámci bloku můžete pomocí logiky rozhodnout, jak něco nahradit.
Místo použití statické hodnoty.
Například:
"dog".gsub(/\w+/) { |animal| animal == "dog" ? "cat" : "dog" }
Zvíře najdeme pomocí \w+
, což znamená „jeden nebo více alfanumerických znaků“.
Tedy:
- Jestliže je to „pes“, nahradíme ho slovem „kočka“
- Jestliže je to cokoli jiného, nahradíme ho slovem „pes“
Tato logika není možná u statické hodnoty, 2. parametru gsub.
Nahrazení více výrazů pomocí hashe
Pokud máte seznam záměn, které chcete provést, můžete použít hash.
Tak jako tento:
colors = { "B" => "blue", "G" => "green", "R" => "red"}
Funguje to jako překladový slovník, kde se klíče nahradí jejich hodnotami.
Tady je příklad:
"BBBGR".gsub(/\w/, colors)
Címž vznikne:
"bluebluebluegreenred"
Ujistěte se, že váš 1. argument bude odpovídat klíčům.
V tomto případě \w
odpovídá jednotlivým znakům, takže bude odpovídat „B“ a pak ho nahradí „modrou“.
Shrnutí
Poznali jste metodu gsub v jazyce Ruby! Je to mocná metoda, která umožňuje nahrazovat nebo nahrazovat znaky uvnitř řetězce.
Má mnohostranné využití:
- Odstranění neplatných znaků (tím, že 2. argument je prázdný řetězec)
- Záměna zástupných znaků & zkratek za jejich plné hodnoty
- Použití logiky vzorů & ke změně řetězce
Nyní je řada na vás, abyste si práci s touto metodou procvičili a mohli si nové znalosti upevnit.
Děkujeme za přečtení 🙂
.
Napsat komentář