JavaScript search - vyhledání znaku | *doplněno

7. prosinec 2010 | 00.23 |
blog › 
JavaScript search - vyhledání znaku | *doplněno

javascriptHledání v JavaScriptu je možné pomocí funkce search. Ale zjistil jsem, že pro vyhledání znaku | nelze použít klasický postup: neco.search("|").

V případě, že použiji klasický způsob, vrátí funkce výsledek = 0. A to jak v případě, že se znak najde, i když se nenajde. Nepomohlo ani escapování: "\|". Zkoušel jsem různé alternativy a nakonec jsem přeci jen zjistil funkčí způsob.

Parametr funkce search je nutné zadat následovně: neco.search(/\\|/);

Lomítka se používají ve funkci search především kvůli dalším vlastnostem hledání, ale tady to má asi něco společného s tím, že | není obyčejný znak. Možná si říkáte, proč jsem potřeboval najít tento znak. Použil jsem ho jako oddělovač a jelikož se mi vzhledově jako oddělovač líbí, chtěl jsem přijít na to, proč to nefunguje.

Vyzkoušet si to můžete na testovacích strákách w3schools.

Doplnění: Díky komentáři pod článkem už přesně vím, proč "svislá čárka" nadělala tolik neplechy. Nevšiml jsem si, že JavaScript search vyhledává na základě regulárních výrazů, jejichž součástí je právě i "svislá čárka", takže moje domněnka, že to je díky jejím speciálním vlastnostem byla správná, i když doteď nebyla podložená. A jelikož to tedy není obyčejný znak, musí být escapován - jenže aby se vyhledávala escapovaná svislá čárka, musí se escapovat i lomítko, protože to je také speciální znak.

Doplnění 2: Místo lomítek ('/'), které ohraničují hledaný výraz je možné použít i klasické uvozovky

Zpět na hlavní stranu blogu