Autor Zpráva
xlifer
Profil
Poradíte někdo jak udělat pravidlo pro nahrazení řetězce v Javascriptu?

Příklad:

ahoj jak se mas

Slovo: "jak"

Výsledek:

ahoj <span>jak</span> se mas


Jak uvedený postup přeložit do funkce str.replace regexp ?

Díky předem za radu.
Chamurappi
Profil
Reaguji na xlifera:
V čem je háček?
var vysledek = str.replace("jak", "<span>jak</span>");
Proč potřebuješ regulární výraz? S ním:
var vysledek = str.replace(/jak/, "<span>jak</span>");
Chceš-li nahradit všechny výskyty, přidej na konec výrazu za lomítko g.
xlifer
Profil
Zkrátka potřebuji funkci do které pošlu slovo a text ve kterém se má slovo nahradit a vrtátit zpět upravený text.

Takže nějak takto:

function repl(s,t) {
var slovo = s;
var text = t;
return str.replace(slovo, "<span>"+slovo+"</span>"); // akorat nevím kde příjde text?
}

repl("jak","ahoj jak se mas");


A ještě s tím jak píšeš, přídat /g , ale nevím kam jsi to přesně myslel?
xlifer
Profil
A ještě malý háček...

Dokáže funkce nahrazovat text s i bez diakritiky a bez ohledu na velikost písmen?

Příklad:

Text: Jak se Máš?

Slovo: mas

Potřebný výsledek: Jak se <span>Máš</span>?
_es
Profil
xlifer:
Na čo sú ti v tej funkcii 4 lokálne premenné s, t, slovo a text?
Dokáže funkce nahrazovat text s i bez diakritiky a bez ohledu na velikost písmen?
Musel by si si ju tak spraviť.
Regulárne výrazy v JS nepodporujú niečo ako ignorovanie diakritiky.

A ještě s tím jak píšeš, přídat /g , ale nevím kam jsi to přesně myslel?
To nie si schopný pochopiť takú jednoduchú jednoznačnú vetu?
xlifer
Profil
_es:

Na čo sú ti v tej funkcii 4 lokálne premenné s, t, slovo a text?
„Dokáže funkce nahrazovat text s i bez diakritiky a bez ohledu na velikost písmen?“
Musel by si si ju tak spraviť.
Regulárne výrazy v JS nepodporujú niečo ako ignorovanie diakritiky.

Tak dobře, tak pouze proměnné s a t (zamotal jsem se do toho).
A kdybych upravil diakritiku, tak jak by funkce mohla vypadat? Poradíš?


A ještě s tím jak píšeš, přídat /g , ale nevím kam jsi to přesně myslel?“
To nie si schopný pochopiť takú jednoduchú jednoznačnú vetu?

Ano, už jsem pochopil.
_es
Profil
xlifer:
A kdybych upravil diakritiku, tak jak by funkce mohla vypadat?
Buď z celého textu, v ktorom sa má hľadať, vyrobíš text bez diakritiky a až v ňom budeš hľadať,
alebo budeš hľadať pomocou regulárneho výrazu, v ktorom bude každé písmeno vo všetkých možných variantoch s diakritikou.
Skús hľadať, možno niekto niečo také už riešil.
xlifer
Profil
_es:

Hledám, ale nic nenacházím... tak kdyby se náhodou někdo našel, tak budu rád.
_es
Profil
xlifer:
tak kdyby se náhodou někdo našel, tak budu rád.
Čo tak skúsiť niečo naštudovať, spraviť aj niečo sám a nečakať, že ti to niekto celé spraví?
Na ignorovanie veľkosti písma slúži parameter i, už si aj pochopil, kam ho písať, podrobnosti si môžeš nájsť v dokumentácii Mozilly.
Niečo hotové, čo by sa ti mohlo zísť, máš napríklad tu.
xlifer
Profil
Převadeč diakritiky i malé písmena mám už vyřešené, ale teď mi jde o jádro převodu:

Zkrátka potřebuji funkci do které pošlu slovo a text ve kterém se má slovo nahradit a vrtátit zpět upravený text.
_es
Profil
xlifer:
teď mi jde o jádro převodu:
Zkrátka potřebuji funkci do které pošlu slovo a text ve kterém se má slovo nahradit a vrtátit zpět upravený text.
Ja potrebujem toľko vecí a nikto mi ich nechce zadarmo spraviť. Kompletnú funkciu ti písať nebudem.
Jedna možnosť je previesť celý text na text bez diakritiky a až v tom hľadať a nahrádzať v pôvodnom texte. Výhoda: rýchlejšie hľadanie, Nevýhoda: Nutnosť počiatočného vytvorenia dlhšieho textu.
Druhá možnosť je hľadať pomocou regulárneho výrazu, ktorý zahrnie všetky možné varianty slova s diakritikou.
Teda konkrétne:
("Jak se Máš?").replace(/m[aáä][sš]/gi,"<span>$&</span>")
xlifer
Profil
_es:

Rozumím a nejde mi o přesné napsáni funkce, ale pouze o radu. A v tom co si uvedl jako nástřel to úplně stačí. Díky.
xlifer
Profil
Ještě mám dotaz jak lze použít přímo proměnných, protože to bude přes uživatelský vstup (formulář), takže nikolv pevně dané předem.

slovo = "mas";
text = "jak se mas";
vysledek = text.replace(slovo/gi,"<span>$&</span>"); // Takhle to nefugnuje?

musí se použít regexp: ?

hledej=new RegExp(slovo);
vysledek = text.replace(hledej,"<span>$&</span>"); // akorat nevim kam uvest /gi
Chamurappi
Profil
Reaguji na xlifera:
Rozklikni si ve svém příspěvku ten RegExp a přečti si, jak se to píše.
xlifer
Profil
Díky.

Dobře vše popsané jsem našel i zde, tak uvádím i pro ostatní třeba se bude hodit:
http://interval.cz/clanky/regularni-vyrazy-a-javascript-metody-search-a-replace/

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: