String su iterabilne kolekcije
String tip podataka je od ES2015 standarda postalo iterabilna kolekcija podataka tzv. “iterable”. Sada su string-ovima dostupni svi mehanizmim koji zahtevaju da kolekcija ima implementiran “iterable protokol”. Pa tako sada možemo nad string-ovima koristiti “for..of”:
1 2 3 4 5 6 7 |
for (const clanKolekcije of 'abc') { console.log(clanKolekcije); } // Vraća: // a // b // c |
ili čak da koristimo spread operator koji takodje zahteva iterable kolekciju za kreiranje niza:
1 2 |
const karakteri = [...'abc']; // console.log(karakteri); // Vraća: ['a', 'b', 'c'] |
Više o ovome pogledajte u delu “Iteratori i Iterable protokol”
Šablonski literali (template literals)
Šablonski literali (eng. “template literals”) su znakovni nizovi (tzv. string) sa ugradjenim izrazima. Obeležavaju se obrnutim polunavodnicima (eng. backtick).
“Template literal” predstavlja novi poboljšani način konkatenacije string-ova, koji je pregledniji i jednostavniji za rad. U template literal-u je dozvoljena ugradnja izraza, ukoliko se obeleže sa dolar znakom i vitičastim zagradama. Template podrazumeva tzv. ” “preset format” dok “literal” predstavlja vrednost koja je napisana tačno onako kako se podrazumeva da se tumači. Stoga svaka nova linija, dodatna praznina (tab) postaju deo tog stringa
Šablonski literali objedinjuju sledeće karakteristike:
- String interpolation
123let first = 'Pera';let last = 'Perić';console.log(`Zdravo ${first} ${last}!`); //Vraća: Zdravo Pera Perić! - Multi-line string literals tzv. “preset format”, tj. kako je zapisano u kodu tako se i interpretira na izlazu.
12345678910let multiLine = `Ovo jeneki stringkoji se definišeu više linija`;// Izlaz://Ovo je//neki string// koji se definiše//u više linija
Primer
Primer uradjen sa ES5 i konkatenacijom string-ova:
1 2 3 4 5 6 7 8 |
var osoba = { ime: 'Petar', nadimak: 'Pera', }; console.log('Zdravo, Ja sam ' + osoba.ime + '!' + "\n" + 'Možete me zvati "' + osoba.nadimak + '".'); // Zdravo, Ja sam Petar! // Možete me zvati "Pera". |
Novi pristup sa šablonskim literalima:
1 2 3 4 5 6 7 8 9 |
var osoba = { ime: 'Petar', nadimak: 'Pera', }; console.log(`Zdravo, Ja sam ${osoba.ime}! Možete me zvati "${osoba.nadimak}".`); // Zdravo, Ja sam Petar! // Možete me zvati "Pera". |
Nove string metode
String.startsWith()
Ovaj metod proverava da li string počinje sa odredjenim setom karaktera, ukoliko počinje onda vraća “True”:
1 |
hello'.startsWith('hell') // Vraća: True |
Ili sa dodatnim opcionim parametrom koji definiše mesto:
1 |
'hello'.startsWith('ello', 1); // Vraća: True |
String.endsWith()
Ovaj metod proverava da li se string završava sa odredjenim setom karaktera, ukoliko se završava onda vraća “True”:
1 |
'hello'.endsWith('ello') // Vraća: True |
Ili sa dodatnim opcionim parametrom koji definiše mesto:
1 |
''hello'.endsWith('hell', 4); // Vraća: True |
String.include()
Ovaj metod proverava da li string sadrži odredjeni set karaktera, ukoliko sadrži onda vraća “True”:
1 |
'hello'.includes('ell') // Vraća: True |
Ili sa dodatnim opcionim parametrom koji definiše mesto:
1 |
'hello'.includes('ell', 1); // Vraća: True |
String.repeat()
Ova metoda vraća izabrani string uvećan željenim brojem puta.
1 |
'doo '.repeat(3) // Vraća: 'doo doo doo ' |
String.fromCodePoint()
Ovaj metod vraća string od odredjene numeričke vrednosti.
1 2 3 4 5 |
var nekiString = String.fromCodePoint(65); console.log(nekiString); // "A" String.fromCodePoint(65, 90); // "AZ" String.fromCodePoint(194564); // "\uD87E\uDC04" |
Pogledajte Online Unicode text converter, dok code svakog dumeta sa tastaure možete pogledati ovde.
String.codePointAt()
Vraća numeričku vrednost od člana na odredjenoj poziciji
1 |
'ABC'.codePointAt(1); // Vraća: Unicode vrednost za B tj. 66 |