03. Strings - xarling/ES6-workshop GitHub Wiki
Strings
Methods
Er zijn een aantal nieuwe methodes aan het String object toegevoegd:
repeat
Herhaal een string een variabel aantal keer.
Syntax: str.repeat(count)
// ES6
var tekst = 'abc'.repeat(0); // ''
var tekst = 'abc'.repeat(3); // 'abcabcabc'
var tekst = 'abc'.repeat(3.5); // 'abcabcabc'. Waarde wordt naar integer geconverteerd
startsWith
Methode om te zoeken naar een substring.
Syntax: str.startsWith(searchString[, position])
(position = startpositie in string)
//ES6
var 'abcdef'.startsWith('ab'); // true
var 'abcdef'.startsWith('ab', 2); // false
var 'abcdef'.startsWith('bc', 1); // true
endsWith
Methode om te zoeken naar een substring.
Syntax: str.endsWith(searchString[, position])
(position = lengte van string)
//ES6
var 'abcdef'.endsWith('ef'); // true
var 'abcdef'.endsWith('ef', 4); // false, gezocht wordt in 'abcd'
includes
Methode om te zoeken naar een substring. Deze methode is case-sensitive.
Syntax: str.includes(searchString[, position])
(position = startpositie in string)
//ES6
var 'abcdef'.includes('de'); // true
var 'abcdef'.includes('DE'); // false
var 'abcdef'.includes('bc', 2); // false, gezocht wordt in 'cdef'
var 'abcdef'.includes('ef', 2); // true, gezocht wordt in 'cdef'
Template strings
Stringmanipulatie in JavaScript is altijd vrij beperkt geweest. Met template strings zijn er een aantal nieuwe functies bijgekomen. Een Template string gebruikt zgn. back-ticks ( ` ) in plaats van de single of double quotes die we gewend zijn.
String substituties
Met String substituties kunnen we JavaScript expressies gebruiken bij de definitie van een string literal. De syntax om de expressies te gebruiken binnen de literal is ${expressie}
.
// ES6 String subtititie
var naam = 'Roel';
console.log(`Hallo, mijn naam is ${naam}.`); // "Hallo, mijn naam is Roel"
Maar ook rekenen:
// ES6 rekenen
var verbruik = 12
var kilometers = 360
console.log(`Mijn auto verbruikt ${kilometers/verbruik} liter in ${kilometers} kilometer.`);
// "Mijn auto verbruikt 30 liter in 360 kilometer"
En zelfs functies:
// functie substitutie
var mijnFunctie = function() {
return "Dit is het resultaat van een functie"
}
console.log(`de functie gaf terug: ${mijnFunctie()}.`);
// "de functie gaf terug: Dit is het resultaat van een functie."
Multiline strings
Elke harde return binnen een template literal is onderdeel van de string.
console.log(`Dit is regel 1
Dit is regel 2`);
Tagged Templates
Tagged Templates maken gebruik van een Template Literal bij de aanroep van een functie. De Template Literal wordt getransformeerd tot de argumenten van de functie op de volgende manier:
// Tagged Template aanroep:
var naam = "Arie"
var leeftijd = 18
functieNaam`Dit is ${naam}, hij is ${leeftijd} jaar oud.`
De template literal wordt als volgt getransformeerd tot argumenten:
functieNaam(['Dit is ', ', hij is ', ' jaar oud.'], naam, leeftijd);
Dus eerst een array van alle losse string literals en vervolgens de expressies in de volgorde waarin ze in de Template Literal stonden.
OPDRACHT
Zie \03.strings\strings-tagged-templates.html voor een opdracht.