3 mahtavaa tapaa käyttää Rubyn Gsub-menetelmää
On 4 lokakuun, 2021 by adminPuhutaanpa Rubyn gsub
-menetelmästä.
Aluksi tarvitset merkkijonon, jotta voit leikkiä tällä menetelmällä.
Miksi?
Koska käytät gsub
:a merkkijonoon korvataksesi sen osia.
Tosiasiassa:
Sanassa ”gsub” oleva ”sub” tarkoittaa ”substitute”, ja ”g” tarkoittaa ”global”.
Onko sinulla merkkijono?
Hyvä.
Jos ei ole, voit lainata minun merkkijonoani.
Tässä se on:
str = "white chocolate"
Sanotaan, että haluamme korvata ”white” sanalla ”dark”.
Tässä sanotaan:
str.gsub("white", "dark")
Tässä sanotaan:
Käskekää merkkijonoa str
korvaamaan KAIKKI ensimmäisen sanan (white
) esiintymät toisella sanalla (dark
).
Mikä tarkoittaa, että saamme syödä paljon parempaa suklaata.
Oh odota, se on vain merkkijono.
Emmehän voi syödä sitä!
Jokatapauksessa…
Rubyn gsub
-menetelmä voi tehdä paljon muutakin kuin pelkkää korvaamista.
Katsotaanpa muutama esimerkki.
Korvaa kuvioita säännöllisellä lausekkeella
Yksittäisen sanan korvaaminen on hyvä.
Mutta entä jos voisit korvata kuvion?
Kuten:
Vuosi, sähköpostiosoite, puhelinnumero jne.
Voit!
Tässä on esimerkki:
"a1".gsub(/\d/, "2")# "a2"
Ensimmäinen argumentti on säännöllinen lauseke, ja sitä on liian paljon käsiteltäväksi tässä.
Mutta se on kuvioiden täsmäytyskieli.
Tässä tapauksessa \d
etsii numeroita, kuten ”1” sanassa ”a1”.
Voit tehdä myös näin:
"a1".gsub(/(\w)(\d)/, '')
Jolloin tuloksena on:
"1a"
Vaihdoimme järjestystä!
Tämä toimii käyttämällä ominaisuutta nimeltä ”capture groups”.
Voimme käyttää ryhmiä seuraavasti: ensimmäiselle ryhmälle,
toiselle ryhmälle jne.
Ryhmät luodaan sulkujen avulla.
Advanced Gsub With Blocks
Tilanteesta tulee todella mielenkiintoinen, kun alat käyttää gsubia lohkojen kanssa.
Miksi?
Koska lohkon sisällä voit käyttää logiikkaa päättämään, miten jotain korvataan.
Sen sijaan, että käyttäisit staattista arvoa.
Esimerkiksi:
"dog".gsub(/\w+/) { |animal| animal == "dog" ? "cat" : "dog" }
Me löydämme eläimen \w+
:llä, joka tarkoittaa ”yksi tai useampi aakkosnumeerinen merkki”.
Sitten:
- Jos se on ”koira”, korvaamme sen sanalla ”kissa”
- Jos sana on jokin muu, korvaamme sen sanalla ”koira”
Tämmöinen logiikka ei ole mahdollista staattisella arvolla, gsubin 2. parametrilla.
Korvaa useita termejä hashilla
Jos sinulla on lista korvattavista termeistä, voit käyttää hashia.
Tällainen:
colors = { "B" => "blue", "G" => "green", "R" => "red"}
Tämä toimii kuin käännössanakirja, jossa avaimet korvataan niiden arvoilla.
Tässä on esimerkki:
"BBBGR".gsub(/\w/, colors)
Joka johtaa:
"bluebluebluegreenred"
Varmista, että 1. argumenttisi vastaa avaimia.
Tässä tapauksessa \w
vastaa yksittäisiä merkkejä, joten se vastaa ”B” ja korvaa sen sitten ”sinisellä”.
Yhteenveto
Olet oppinut Rubyn gsub-metodista! Se on tehokas metodi, jonka avulla voit korvata tai korvata merkkejä merkkijonon sisällä.
Sillä on useita käyttötarkoituksia:
- Epätevien merkkien poistaminen (tekemällä 2. argumentti tyhjäksi merkkijonoksi)
- Sijoitussalpaajien & akronyymien korvaaminen niiden täydellisillä arvoilla
- Mallien &logiikan käyttäminen merkkijonon muuttamiseen
Nyt on sinun vuorosi harjoitella tämän metodin käyttämistä, niin että saat uuden tietämyksesi jäämään muistiin.
Kiitos lukemisesta 🙂
Vastaa