Zamena unutar JavaScript stringa

Objekat string omogućava zamenu teksta unutar stringa drugim tekstom. Metod koji koristimo je replace() i pomoću njega možemo zadavati običan podstring ili regularni izraz za tekst koji treba zameniti.

s.replace(S, R) Menja pronađeni podstring S novim tekstom R
str.replace(podstring, novi_tekst) str.replace(regEx, novi_tekst)

Ako zadajemo string kao prvi parametar, zamena se obavlja samo nad prvim pronađenim podstringom koji je jednak zadatom stringu. Ako bismo želeli da se zamena obavi nad svim pojavama zadatog stringa, moramo da upotrebimo regularni izraz sa modifikatorom g.

Očigledna mana koja se nameće je što različite tekstove koje pronalazimo preko zadatih regularnih izraza uvek menjamo jednim te istim tekstom. Šta ako želimo da se zamenski tekst odnosi baš na podstring koji smo pronašli? Zamenski string može sadržati i specijalne oznake koje se odnose na pronađene podstringove.

$& Pronađeni podstring.
$` Deo originalnog stringa pre pronađenog podstringa.
$' Deo originalnog stringa posle pronađenog podstringa.
$$ Običan znak za dolar.

Kao drugi parametar, umesto običnog teksta možemo proslediti funkciju. Ovo je callback funkcija koja se poziva za svaki pronađeni podstring. Njena povratna vrednost je string koji se ubacuje na mesto pronađenog podstringa. Parametri koji se zadaju funkciji omogućavaju potpunu kontrolu nad kreiranjem zamenskog stringa.

str.replace(podstring, funkcija) str.replace(regEx, funkcija)

Parametri funkcije su:

ps Pronađeni podstring.
p1, p2, ... Podstringovi koji odgovaraju delovima regularnog izraza u zagradama.
poz Pozicija na kojoj se nalazi pronađeni podstring.
str Originalni string u kome se vrši pretraga.

Korišćenje regularnog izraza i zamenske funkcije je najmoćnija kombinacija metoda replace().

Primer za zamene


  var prom = "Svaki vodeničar vodi evidenciju samlevenog žita.";
  var a = "";
      
  // menjamo podstring "vod" sa boldovanim "lub"
  a = prom.replace("vod", "<b>lub</b>");    // zamenjena samo prva pojava

  // menjamo šablon "v.d" sa boldovanim "lub"
  a = prom.replace(/v.d/, "<b>lub</b>");    // zamenjena samo prva pojava

  // menjamo šablon "v.d" sa boldovanim "lub", ali svuda gde ga ima
  a = prom.replace(/v.d/g, "<b>lub</b>");    // zamenjene sve pojave

  // šablon ostaje isti ali zamenski string menjamo tako da 
  // svaki pronađeni podstring podebljamo, bez promene teksta
  a = prom.replace(/v.d/g, "<b>$&</b>");    // boldovane sve pojave

  // koristimo funkciju umesto zamenskog stringa - svaki pronađeni podstring markiramo
  a = prom.replace(/v.d/g, function(ps) {
    return '<mark>' + ps + '</mark>';  // markiranje
  });
  
js-str-replace-sr
Svi elementi sajta Web'n'Study, osim onih za koje je navedeno da su u javnom vlasništvu, vlasništvo su autora i ne smeju se koristiti, u celosti ili delimično bez pismenog odobrenja autora. To uključuje tekstove, slike, ilustracije, animacije, prateći grafički materijal i programski kod.
Ovaj sajt koristi tehnologiju kolačića (cookies). Detaljnije o tome možete pročitati u tekstu o našoj politici privatnosti.