Úloha 6 – Metody pro hledání textu v řetězci
| Sitio: | Moodle ZČU |
| Curso: | Sada úloh pro procvičení v předmětu KVD/PGM1P (BP Vítek Dolný) |
| Libro: | Úloha 6 – Metody pro hledání textu v řetězci |
| Imprimido por: | Guest user |
| Día: | domingo, 18 de octubre de 2026, 10:00 |
Ú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.
Úloha
Zadání (kontext úlohy):
Představ si, že vytváříš skript, který má zjistit, zda text obsahuje určité slovo – a chceš porovnat, zda .indexOf() a .search() vrací stejný výsledek. Cílem je pochopit, že obě metody dělají podobnou věc, ale fungují trochu jinak.
Cíl úlohy:
Procvičíš si metody .indexOf() a .search(), jejich výsledky a rozdíly v použití.
Vstupní podmínky:
Student pracuje pouze s nově vytvořeným souborem script.js.
V proměnné text bude uložen libovolný řetězec.
V proměnné hledaneSlovo bude text, který má program hledat.
Požadovaný výstup:
-
Pomocí
.indexOf()zjisti pozici hledaného slova a ulož ji do proměnnépoziceIndexOf. -
Pomocí
.search()zjisti pozici stejného slova a ulož ji do proměnnépoziceSearch. -
Výsledky vypiš do konzole ve tvaru:
-
indexOf našlo slovo na pozici: X -
search našlo slovo na pozici: Y
-
-
Pokud některá metoda vrátí
-1, vypiš místo čísla textSlovo nebylo nalezeno.
Doplňující pokyny:
-
Obě metody rozlišují velká a malá písmena.
-
Nepoužívej regulární výrazy – zatím hledej pouze prostý text.
Řešení úlohy
Co je zde splněno
-
Použity obě metody
.indexOf()a.search()pro vyhledání slova. -
Výsledky jsou uloženy do proměnných
poziceIndexOfapoziceSearch. -
Výstup je vypsán do konzole v předepsaném formátu.
-
Pokud metoda vrátí
-1, vypíše se text „Slovo nebylo nalezeno“. -
Dodrženo rozlišování velkých a malých písmen (např.
"Slunce"≠"slunce").
🔍 Poznámky
.indexOf()i.search()vrací první nalezený index výskytu daného textu.Hlavní rozdíl je, že
.search()dokáže přijímat i regulární výrazy, zatímco.indexOf()nikoli – ale v této úloze se používají pouze obyčejné texty.Pokud bys chtěl vyhledávat bez ohledu na velikost písmen, můžeš přidat
.toLowerCase()k oběma řetězcům.