Autor Zpráva
Carduus
Profil *
Zdravím,
potřebuji zjistit, jestli např. řetězec text obsahuje (. Nejlépe, aby mi to vracelo hodnotu True/False. (Myslel jsem, že to udlám přes match() ale nějak jsem tento příkaz nepochopil). Jak to mám udělat?
Díky
Witiko
Profil
Carduus:
text.indexOf(řetězec) !== -1

"ahoj".indexOf("světe") // -1
"ahoj světe".indexOf("světe") // 5
ShiraNai7
Profil
if(retezec.indexOf('neco') !== -1) {
  // je tam
} else {
  // není tam
}
Witiko
Profil
Napišme si funkci:
String.prototype.obsahuje = function(řetězec) {
  return řetězec instanceof RegExp?
         řetězec.test(this):this.indexOf(řetězec) !== -1;
};

"Ahoj světe".obsahuje("ahoj"); // false
"Ahoj světe".obsahuje("světe"); // true
"Ahoj světe".obsahuje(/ahoj/i); // true

Myslel jsem, že to udlám přes match()
Ta funkce se spíše hodí ke získání výsledků shody řetězce s regulárním výrazem. Na testování toho, jestli ke shodě došlo, se u testování podle regulárních výrazů používá funkce regulárníVýraz.test(řetězec). Pokud nám stačí zjištění, jestli se v řetězci nachází určitý text, postačí funkce řetězec.indexOf(podtext), která navrátí místo na kterém se podřetězec nachází nebo -1 v případě nenalezení. Výše uvedená funkce tyto dvě funkce spojuje pod jednu střechu.
Carduus
Profil *
Díky lidi přesně něco takového jsem potřeboval. Celkem mě překvapilo, že v JavaScript nejde toto : if ("neco" in retezec) {..... No jsme asi moc rozmazlený z Pythonu :D
Witiko
Profil
Carduus:
To jde, ale klíčové slovo in se používá výlučně k testování, jestli objekt obsahuje určitý atribut.
"ahoj" in {ahoj: "světe"}; // true
A také pro iteraci nad objektem
for(var jméno in objekt) {
  /* Zpracujeme objekt[jméno] */
}
Tahle functionalita by se pak s tou pythonovskou třískala, protože javascript má vedle primitivního typu pro řetězce - "řetězec" - i neměnnou (immutable) verzi, podobně jako například Java, která je objektem - new String("řetězec"). Například "indexOf" in new String("řetězec") navrací true ačkoliv řetězec daný text neobsahuje. Nicméně obsahuje takto pojmenovanou metodu. Jak vidíš, byl by v tom nehorázný brajgl. :-)

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0