WEBnSTUDY.com
JavaScript

Izdvajanje podstringa u JavaScriptu

Za izdvajanje podstringa iz stringa, obično zadajemo poziciju početka podstringa i dužinu, odnosno poziciju kraja podstringa. Metodi string objekta koje koristimo su substr(), substring() i slice().

s.substr(P, D) Vraća substring počev od pozicije P, dužine D.
s.substring(P, K) Vraća substring počev od pozicije P, do pozicije K.
s.slice(P, K) Vraća substring počev od pozicije P, do pozicije K.

Metod substr()

Metod substr() se poziva za string objekat, sa zadata dva numerička parametra. Ti parametri su pozicija početka i dužina podstringa. Kao rezultat dobijamo novi string izvučen iz početnog stringa.

Prvi parametar je obavezan, a može biti i negativan. Drugi parametar nije obavezan, a ako se navede, mora biti veći od nule ili ćemo kao rezultat dobiti prazan string.

Ako za prvi parametar zadamo preveliku vrednost, dobićemo prazan string.

Ako je prvi parametar negativan, odbrojavaće znakove sa desne strane, odnosno od kraja stringa (-1 je poslednji, -2 pretposlednji...). Ako preteramo sa negativnom vrednošću, podrazumeva se početak stringa (kao da smo zadali 0).

str.substr(početak) str.substr(početak, dužina)
ParametarTipObavezanOpis
početaknumerikDARedni broj znaka od koga počinje podstring.
dužinanumerikNEBroj znakova podstringa.
Ako se ne navede, izdvajaju se svi znakovi do kraja stringa.
Ako se navede nula ili negativna vrednost, dobija se prazan string.
RezultatOpis
stringPodstring izvučen iz početnog stringa.

Metod substring()

Metod substring() se takođe poziva sa zadata dva numerička parametra. Ti parametri su pozicije početka i kraja podstringa. Kao rezultat dobijamo novi string izvučen iz početnog stringa.

Ako zadamo dva jednaka broja (pozicija početka i kraja su jednake), kao rezultat dobijama prazan string. Ako zadamo samo početak, a ne i kraj, izdvajaju se svi znakovi do kraja stringa.

Ako je pozicija početka veća od pozicije kraja, ovaj metod će automatski zameniti ove dve vrednosti, tako da ćemo svakako dobiti neki podstring.

Ako je bilo koji od ova dva parametra veći od dužine stringa, podrazumevaće se vrednost jednaka dužini stringa. Efektivno, ovo znači da se ide do kraja stringa. Ako je bilo koji od ova dva parametra manji od 0 ili nije broj (NaN - Not A Number), podrazumevaće se vrednost 0. To će u stvari značiti izdvajanje od početka stringa.

str.substring(početak) str.substring(početak, kraj)
ParametarTipObavezanOpis
početaknumerikDARedni broj znaka od koga počinje podstring.
krajnumerikNERedni broj poslednjeg znaka podstringa (u podstring ulaze znakovi pre ovog broja).
Ako se ne navede, izdvajaju se svi znakovi do kraja stringa.
RezultatOpis
stringPodstring izvučen iz početnog stringa.

Metod slice()

Metod slice() je jako sličan metodu substring(). Takođe se zadaju pozicije početka i kraja, tako da će u velikom broju slučajeva rezultat ova dva metoda biti isti. Razlika je samo u tome kako se tretiraju specifične vrednosti.

Ako zadamo dva jednaka broja ili ako zadamo samo jedan parametar (početak), dobićemo rezultat koji je potpuno isti kao kod metoda substring().

Ako je pozicija početka veća od pozicije kraja, za metod slice() je to neregularna situacija. Neće zameniti mesta parametrima, već će kao rezultat vratiti prazan string.

Ako je bilo koji od ova dva parametra veći od dužine stringa, podrazumevaće se vrednost jednaka dužini stringa (isto kao substring). Ako je početak negativan, to označava redni broj znaka od kraja stringa (-1 je poslednji, -2 pretposlednji...) - ponašanje isto kao kod metoda substr(). Ako je kraj negativan, takođe će odbrojavati znakove od kraja stringa, s tim što će znak do koga stigne predstavljati granicu - on neće biti ući u podstring.

str.slice(početak) str.slice(početak, kraj)
ParametarTipObavezanOpis
početaknumerikDARedni broj znaka od koga počinje podstring.
krajnumerikNERedni broj poslednjeg znaka podstringa (u podstring ulaze znakovi pre ovog broja).
Ako se ne navede, izdvajaju se svi znakovi do kraja stringa.
RezultatOpis
stringPodstring izvučen iz početnog stringa.

Izdvajanje podstringa

Da pogledamo neke primere koji će nam razjasniti upotrebu metoda substr().


  var prom = "ABCDEF";
  var x = "";
  x = prom.substr(0,3);      // x = "ABC"
  x = prom.substr(3,2);      // x = "DE"
  x = prom.substr(3);        // x = "DEF" - ako se ne zada dužina, ide3 do kraja stringa
  x = prom.substr(-1);       // x = "F" - početak negativan - ide od kraja
  x = prom.substr(-4,2);     // x = "CD"
  x = prom.substr(10,4);     // x = "" - ako se pretera sa prvim parametrom
  x = prom.substr(-10,4);    // x = "ABCD" - ako se pretera sa prvim parametrom u negativnoj vrednosti
  x = prom.substr(3,10);     // x = "DEF" - ako se pretera sa drugim parametrom, ide do kraja stringa
	

Pogledajmo sada kako funkcioniše metod substring().


  var prom = "ABCDEF";
  var x = "";
  x = prom.substring(1,3);      // x = "BC" - počinje od znaka 1, ali ne uključuje i znak 3
  x = prom.substring(3,3);      // x = ""  - ako su početak i kraj jednaki
  x = prom.substring(3);        // x = "DEF" - ako se ne zada poslednji znak, ide do kraja
  x = prom.substring(5,2);      // x = "DE" - početak > kraj - menja im mesta - isto kao (2,5)
  x = prom.substring(-5,10);    // x = "ABCDEF" - parametri van okvira - isto kao (0,6)
	

Pogledajmo sada kako funkcioniše metod slice(). Primetićete da se u većini slučajeva ponaša isto kao substring().


  var prom = "ABCDEF";
  var x = "";
  x = prom.slice(1,3);      // x = "BC" - isto kao substring()
  x = prom.slice(3,3);      // x = ""  - isto kao substring()
  x = prom.slice(3);        // x = "DEF" - isto kao substring()
  x = prom.slice(5,2);      // x = "" - početak > kraj - neregularno
  x = prom.slice(-1);       // x = "F" - početak negativan - isto kao substr()
  x = prom.slice(-4,4);     // x = "CD" - počinje od 4. znaka od kraja (C), i ide do 4. znaka od početka ali ga ne uključuje  
  x = prom.slice(0,-4);     // x = "AB" - počinje od početka, i ide do 4. znaka od kraja (C) ali ga ne uključuje
	
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) radi vođenja interne statistike u cilju unapređenja korisničkog iskustva. Tako prikupljeni podaci su anonimni i nedostupni trećim licima. Vaša privatnost nije ugrožena ni na koji način.