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.
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)
Parametar | Tip | Obavezan | Opis |
---|---|---|---|
početak | numerik | DA |
Redni broj znaka od koga počinje podstring.
|
dužina | numerik | NE |
Broj znakova podstringa, počev od početnog znaka.
|
Rezultat | Opis |
---|---|
string | Podstring 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)
Parametar | Tip | Obavezan | Opis |
---|---|---|---|
početak | numerik | DA |
Redni broj znaka od koga počinje podstring.
|
kraj | numerik | NE |
Redni broj poslednjeg znaka podstringa (u podstring ulaze znakovi pre ovog broja).
|
Rezultat | Opis |
---|---|
string | Podstring 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)
Parametar | Tip | Obavezan | Opis |
---|---|---|---|
početak | numerik | DA |
Redni broj znaka od koga počinje podstring.
|
kraj | numerik | NE |
Redni broj poslednjeg znaka podstringa (u podstring ulaze znakovi pre ovog broja).
|
Rezultat | Opis |
---|---|
string | Podstring 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