Úloha 6 – Metody pro hledání textu v řetězci
Úvod do úlohy
Vyhledávání textu nebo prvků v JavaScriptu je velmi častá operace — používá se při ověřování vstupů, filtrování dat, práci s formuláři, validaci e-mailů, nebo třeba při kontrole, jestli řetězec obsahuje určité slovo.
Pro tyto situace nám JavaScript nabízí tři užitečné metody: .indexOf(), .search() a .includes().
Na první pohled všechny tři dokážou „najít text“, ale každá se chová trochu jinak.
-
.indexOf()a.search()vracejí číslo – pozici, kde se hledaný text poprvé vyskytuje. -
.includes()vrací true/false – jednoduše říká, zda text obsahuje hledaný výraz.
Tím pádem se .includes() často používá tam, kde nepotřebujeme znát přesnou pozici, ale jen ověřit, zda text existuje.
Teorie a principy
.indexOf()
-
Hledá přesný text v řetězci nebo poli.
-
Vrací index prvního výskytu nebo
-1, pokud nebyl nalezen. -
Umí začít hledat od určité pozice (druhý parametr).
-
Je citlivá na velikost písmen.
Syntaxe:
.search()
-
Funguje podobně jako
.indexOf(), ale navíc umí používat regulární výrazy. -
Vrací také index prvního výskytu nebo
-1. -
Neumožňuje zadat počáteční pozici hledání.
Syntaxe:
.includes()
-
Nejjednodušší metoda na ověření, zda text (nebo pole) něco obsahuje.
-
Vrací pouze true (ano) nebo false (ne).
-
Je čitelnější než
.indexOf()tam, kde nepotřebujeme znát pozici. -
Je také citlivá na velikost písmen.
Syntaxe:
Praktické příklady kódu
1. .indexOf() – získání pozice slova
2. .search() – vyhledávání pomocí regulárního výrazu
3. .includes() – kontrola, jestli text obsahuje výraz
4. .includes() na poli
Porovnání metod
| Metoda | Vrací | Umí regulární výrazy | Lze určit startIndex | Citlivá na velikost písmen |
|---|---|---|---|---|
| .indexOf() | Číslo (index nebo -1) | ❌ Ne | ✅ Ano | ✅ Ano |
| .search() | Číslo (index nebo -1) | ✅ Ano | ❌ Ne | ✅ Ano |
| .includes() | Boolean (true/false) | ❌ Ne | ✅ Ano | ✅ Ano |
Typické chyby a záludnosti
-
Záměna návratových hodnot
.indexOf()a.search()vrací číslo, zatímco.includes()vrací true/false.
Pokud omylem porovnáte.indexOf()strue, kód nebude fungovat. -
Citlivost na velikost písmen
Všechny tři metody rozlišují velká a malá písmena.
Chcete-li hledat bez ohledu na velikost, převeďte text na malá: -
Zapomenutí na kontrolu
-1u.indexOf()nebo.search()
Pokud se výraz nenajde, obě metody vracejí-1, což je třeba ošetřit podmínkou. -
Použití regulárního výrazu u
.includes().includes()podporuje pouze běžný text, ne regulární výrazy – k tomu slouží.search().
Shrnutí
-
.indexOf()– zjistí kde se výraz nachází (index). -
.search()– najde výraz podle vzoru (RegExp). -
.includes()– rychle zjistí, zda text výraz obsahuje (true/false). -
Všechny tři metody jsou citlivé na velikost písmen.
-
.includes()je ideální pro jednoduché podmínky,.search()pro pokročilé vyhledávání a.indexOf()pro práci s pozicemi textu nebo prvků v poli.