New string methods:
> "string".startsWith("str", position = 0)
true
> "string".endsWith("ing", endPosition = arg1.length)
true
> "string".includes("rin", position = 0)
true
> "string".repeat(3)
"stringstringstring"
Each of these methods has an optional second parameter, which specifies where the string to be searched starts or ends:
> "string".startsWith("tri", 1)
true
> "string".endsWith("in", 5)
true
> "string".includes("tri", 1)
true
> "string".includes("tri", 2)
false
ES6 has a new type of string literal called a template literal:
const first = 'Neil';
const last = 'Thawani';
console.log(`Hello ${first} ${last}.`);
Template literals can also be used to create multi-line strings.
const multiLine = `This
is
a
multi-line
string.`;
Template literals are also 'raw' if you prefix them with the tag String.raw.
const str = String.raw`Not a newline: \
`;
console.log(str === 'Not a newline: \\\
'); // true
Escape characters are not interpreted.
Strings are iterable. You can use for of to iterate over their characters.
> for (const ch of 'abc') { console.log(ch); }
a
b
c
You can use the spread operator to turn strings into Arrays.
> const chars = [...'abc'];
['a', 'b', 'c']
Source: Exploring ES6 by Dr. Axel Rauschmayer.