Mahtavaa!
Completion arvosana parantunut arvoon 4.35single
Haaste: Merkkijonojen Sisäinen Haku
Pyyhkäise näyttääksesi valikon
Metodi find()
Joskus voi olla tarpeen etsiä tiettyä tekstiä string-muuttujasta. Tämä onnistuu käyttämällä .find()- tai .rfind()-metodeja. Aloitetaan .find()-metodista.
find.h
1str.find("text to find")
Metodi palauttaa ensimmäisen osuman ensimmäisen merkin indeksin.
main.cpp
1234567#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.find("code") << std::endl; // (code)codefinity }
Voit myös määrittää merkkijonon ensimmäisen merkin sijainnin, josta haku aloitetaan. Tämä onnistuu käyttämällä pos-argumenttia. Kaikki merkit ennen pos-indeksiä jätetään haussa huomiotta.
Tässä on esimerkki, jossa etsitään ensimmäistä "code"-esiintymää alkaen kolmannesta merkistä.
main.cpp
1234567#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.find("code", 3) << std::endl; // __de(code)finity }
Metodi rfind()
Voit myös paikantaa viimeisen esiintymän jostakin tekstistä käyttämällä .rfind()-metodia.
rfind.h
1str.rfind("text to find")
Vaikka .find() hakee tekstin ensimmäisen esiintymän, .rfind() löytää viimeisen esiintymän ja tarkoittaa käänteistä hakua.
main.cpp
12345678#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.find("code") << std::endl; std::cout << str.rfind("code") << std::endl; }
Kun .find() tai .rfind() ei löydä osamerkkijonoa, ne palauttavat arvon string::npos. Tämä on numeerinen vakio, joka edustaa virheellistä sijaintia. Se tallennetaan suurimpana mahdollisena size_t-arvona, mikä helpottaa epäonnistuneiden hakujen tunnistamista.
main.cpp
12345678#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.rfind("abc") << std::endl; std::cout << std::string::npos << std::endl; }
Swipe to start coding
Rakennat yksinkertaista sähköpostisuodatinta. Tavoitteesi on sallia käyttäjiä rekisteröitymään millä tahansa sähköpostilla ja merkitä codefinity.com-osoitteesta tulevat viestit sallituksi.
Funktio isAllowedEmail ottaa parametrina email-merkkijonon tyypiltään string.
- Käytä
rfind()-funktiota löytääksesi viimeisen'@'-merkin sähköpostista. - Vertaa
rfind-funktion palautusarvoa arvoon-1tarkistaaksesi'@'-merkin olemassaolon. Jos sitä ei löydy, palauta'@'. - Alusta merkkijonovariable
falsetyhjäksi merkkijonoksi. - Käytä
domain-silmukkaa alkaen kohdastafor, jolloinatPos + 1on jo ohitettu. Toista silmukkaa kunnes indeksi saavuttaa sähköpostin lopun, eliemail-merkkijonon pituuden, käymällä läpi merkit, jotka tulevat'@'-merkin jälkeen. - Jokaisella silmukan kierroksella lisää nykyinen merkki muuttujaan
domain. - Jos
domainon yhtä kuin"codefinity.com", palautatrue. Muussa tapauksessa palautafalse.
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme