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 podstring počev od pozicije P, dužine D.
"abcdef".substr(2,4) == "cdef"
s.substring(P, K) Vraća podstring počev od pozicije P, do pozicije K (bez K-tog znaka).
"abcdef".substring(2,4) == "cd"
s.slice(P, K) Vraća podstring počev od pozicije P, do pozicije K (bez K-tog znaka).
"abcdef".slice(2,4) == "cd"

Možete odmah "skočiti" na primer.

js-str-sub-sr

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četaknumerikDA Redni broj znaka od koga počinje podstring.
  • 0 - prvi znak,
  • 1 - drugi znak...
  • prevelik - neispravno - dobija se prazan string
  • -1 == dužina-1 - poslednji znak
  • -2 == dužina-2 - pretposlednji znak...
  • -prevelik - podrazumeva se 0, tj. prvi znak
dužinanumerikNE Broj znakova podstringa, počev od početnog znaka.
  • undefined - ako se ne navede, izdvaja se sve do kraja
  • 0 - neispravno - dobija se prazan string
  • negativan - neispravno - dobija se prazan string
  • prevelik - izdvaja se sve do kraja
RezultatOpis
stringPodstring izvučen iz početnog stringa.

Metod substr()

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


  "ABCDEF".substr(0,3);      // "ABC" - od početka, 3 znaka
  "ABCDEF".substr(3,2);      // "DE"  - od četvrtog znaka, 2 znaka
  "ABCDEF".substr(3);        // "DEF" - ako se ne zada dužina, ide do kraja stringa
  "ABCDEF".substr(-4,2);     // "CD"  - početak negativan, uzima 4. od kraja, izdvaja 2 znaka
  "ABCDEF".substr(-1);       // "F"   - početak negativan, nema dužine, ide sve do kraja
  "ABCDEF".substr(10,4);     // ""    - prevelik početak
  "ABCDEF".substr(-10,3);    // "ABC" - prevelik negativan početak - podrazumeva se 0
  "ABCDEF".substr(3,10);     // "DEF" - prevelika dužina, ide do kraja 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četaknumerikDA Redni broj znaka od koga počinje podstring.
  • 0 - prvi znak stringa
  • negativan ili NaN - podrazumeva se 0
  • prevelik - podrazumeva se da je zadata dužina stringa
  • veći od kraja - obrće vrednosti kraja i početka
krajnumerikNE Redni broj poslednjeg znaka podstringa (u podstring ulaze znakovi pre ovog broja).
  • undefined - ako se ne navede, izdvaja se sve do kraja
  • jednak početku - dobija se prazan string
  • negativan ili NaN - podrazumeva se 0
  • prevelik - podrazumeva se da je zadata dužina stringa
  • manji od početka - obrće vrednosti početka i kraja
RezultatOpis
stringPodstring izvučen iz početnog stringa.

Metod substring()

Pogledajmo sada kako funkcioniše metod substring().


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

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četaknumerikDA Redni broj znaka od koga počinje podstring.
  • 0 - prvi znak stringa
  • 1 - drugi znak...
  • prevelik - podrazumeva se da je zadata dužina stringa
  • -1 == dužina-1 - poslednji znak
  • -2 == dužina-2 - pretposlednji znak...
  • -prevelik - podrazumeva se 0, tj. prvi znak
  • veći od kraja - neispravno, vraća "" (prazan string)
krajnumerikNE Redni broj poslednjeg znaka podstringa (u podstring ulaze znakovi pre ovog broja).
  • undefined - ako se ne navede, izdvaja se sve do kraja
  • 0 - prvi znak stringa
  • 1 - drugi znak...
  • prevelik - podrazumeva se da je zadata dužina stringa
  • -1 == dužina-1 - poslednji znak
  • -2 == dužina-2 - pretposlednji znak...
  • -prevelik - podrazumeva se 0, tj. prvi znak
  • jednak početku - dobija se prazan string
  • manji od početka - neispravno, vraća "" (prazan string)
RezultatOpis
stringPodstring izvučen iz početnog stringa.

Metod slice()

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


  "ABCDEF".slice(1,3);    // "BC" - isto kao substring()
  "ABCDEF".slice(3,3);    // ""  - isto kao substring()
  "ABCDEF".slice(3);      // "DEF" - isto kao substring()
  "ABCDEF".slice(5,2);    // "" - početak > kraj - neregularno
  "ABCDEF".slice(-1);     // "F" - početak negativan - isto kao substr()
  "ABCDEF".slice(-4,4);   // "CD" - počinje od 4. znaka od kraja (C), i ide do 4. znaka (E) koji ne uključuje
  "ABCDEF".slice(0,-1);   // "ABCDE" - isključuje poslednji znak
	
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.