3 moduri minunate de a folosi metoda Gsub a lui Ruby
On octombrie 4, 2021 by adminSă vorbim despre metoda gsub
a lui Ruby.
În primul rând, veți avea nevoie de un șir de caractere pentru a vă juca cu această metodă.
De ce?
Pentru că folosiți gsub
pe un șir de caractere pentru a înlocui părți din el.
De fapt:
„sub” din „gsub” înseamnă „substitute”, iar „g” înseamnă „global”.
Ai șirul tău?
Bine.
Dacă nu, îl poți împrumuta pe al meu.
Iată-l:
str = "white chocolate"
Să spunem că vrem să înlocuim „white” cu „dark”.
Iată cum:
str.gsub("white", "dark")
Aceasta înseamnă:
Dat fiind șirul str
, comandați-i să înlocuiască TOATE aparițiile primului cuvânt (white
) cu al doilea cuvânt (dark
).
Înseamnă că vom mânca ciocolată mult mai bună.
Oh stai, este doar un șir.
Nu putem mânca asta!
În orice caz…
Metoda gsub
a lui Ruby poate face mult mai mult decât o simplă substituție.
Să vedem câteva exemple.
Înlocuirea modelelor cu o expresie regulată
Înlocuirea unui singur cuvânt este bună.
Dar dacă ați putea înlocui un tipar?
Ca de exemplu:
Un an, o adresă de e-mail, un număr de telefon, etc.
Se poate!
Iată un exemplu:
"a1".gsub(/\d/, "2")# "a2"
Primul argument este o expresie regulată, și este prea mult pentru a acoperi aici.
Dar este un limbaj de potrivire a tiparelor.
În acest caz, \d
caută numere, cum ar fi „1” din „a1”.
De asemenea, puteți face acest lucru:
"a1".gsub(/(\w)(\d)/, '')
Care are ca rezultat:
"1a"
Am schimbat ordinea!
Acest lucru funcționează prin utilizarea unei caracteristici numite „grupuri de captură”.
Potem folosi grupurile ca pentru primul grup,
pentru al doilea grup, etc.
Grupurile sunt create cu paranteze.
Gsub avansat cu blocuri
Lucrurile devin cu adevărat interesante atunci când începeți să folosiți gsub cu un bloc.
De ce?
Pentru că în cadrul unui bloc puteți folosi logica pentru a decide cum să înlocuiți ceva.
În loc de a folosi o valoare statică.
De exemplu:
"dog".gsub(/\w+/) { |animal| animal == "dog" ? "cat" : "dog" }
Găsim animalul cu \w+
, care înseamnă „unul sau mai multe caractere alfanumerice”.
Apoi:
- Dacă este un „câine”, îl înlocuim cu „pisică”
- Dacă cuvântul este altceva, îl înlocuim cu „câine”
Acest tip de logică nu este posibil cu o valoare statică, al 2-lea parametru al lui gsub.
Înlocuiți mai mulți termeni cu un hash
Dacă aveți o listă de substituiri de făcut, puteți folosi un hash.
Ca acesta:
colors = { "B" => "blue", "G" => "green", "R" => "red"}
Acesta funcționează ca un dicționar de traduceri, unde cheile vor fi înlocuite cu valorile lor.
Iată un exemplu:
"BBBGR".gsub(/\w/, colors)
Care are ca rezultat:
"bluebluebluegreenred"
Asigură-te că primul tău argument se va potrivi cu cheile.
În acest caz, \w
se potrivește cu caractere individuale, așa că se va potrivi cu „B”, apoi îl va înlocui cu „albastru”.
Rezumat
Ai învățat despre metoda gsub în Ruby! Este o metodă puternică care vă permite să înlocuiți, sau să substituiți caracterele din interiorul unui șir de caractere.
Aceasta are utilizări multiple:
- Îndepărtarea caracterelor invalide (prin transformarea celui de-al doilea argument într-un șir gol)
- Înlocuirea caracterelor de poziție & acronime cu valorile lor complete
- Utilizarea modelelor & logice pentru a schimba un șir de caractere
Acum este rândul tău să exersezi cu această metodă, astfel încât să poți face ca noile tale cunoștințe să se fixeze.
Mulțumesc că ați citit 🙂
.
Lasă un răspuns