Úvod do úlohy

Velmi často potřebujeme upravit text tak, aby místo určité části obsahoval něco jiného. Může jít o jednoduché nahrazení jednoho slova, opravu překlepu nebo hromadnou výměnu všech výskytů určitého znaku. V JavaScriptu k tomu slouží metoda replace(), která je velice mocná – umí provést jednoduché nahrazení i složité úpravy za pomoci regulárních výrazů. Porozumět rozdílům mezi základním a „pokročilým“ použitím je důležité, protože díky tomu dokážeme snadno zvládnout i složité textové transformace.


Teorie a principy

  1. Základní použití replace()

    • První argument je hledaný řetězec.

    • Druhý argument je náhrada, kterou chceme vložit.

    • Nahrazuje pouze první výskyt hledaného řetězce.

  2. Globální režim (g)

    • Pokud potřebujeme nahradit všechny výskyty, musíme použít regulární výraz s příznakem g.

  3. Case-insensitive režim (i)

    • Pokud chceme nahradit bez ohledu na velikost písmen, použijeme příznak i.

    • Lze kombinovat – např. /text/gi znamená „nahraď všechna slova text bez ohledu na velikost písmen“.

  4. Spolupráce s regulárními výrazy

    • replace() je úzce propojena s regulárními výrazy. Díky nim můžeme hledat složitější vzory (např. všechna čísla, e-mailové adresy, skupiny písmen).

    • Pro začátečníky je důležité vědět, že když místo řetězce použijeme /.../, pracujeme s regulárním výrazem.


Praktické příklady kódu


Typické chyby / záludnosti

  • Očekávání, že replace() nahradí všechny výskyty bez použití g

    data-start="2311" data-end="2380">

  • Zapomenutí, že regulární výraz se zapisuje do lomítek /.../

  • Neuvědomění si rozdílu mezi "" a regulárním výrazem

    • "text".replace("T", "X") – nenahradí, protože hledá přesnou shodu (velké písmeno).

    • "text".replace(/t/i, "X") – funguje bez ohledu na velikost písmen.


Shrnutí

  • replace(hledane, nahrada) mění jen první výskyt.

  • Pokud chceme nahradit všechny výskyty, použijeme regulární výraz s příznakem g.

  • Příznak i zajistí ignorování velikosti písmen.

  • replace() vždy vrací nový řetězec, původní zůstává beze změny.

  • Regulární výrazy dávají replace() velkou flexibilitu při vyhledávání vzorů.