ES6中字符串新增了哪些拓展?
字符的 Unicode 表示法
ES6 加强了对 Unicode 的支持,允许采用\uxxxx形式表示一个字符, 其中xxxx表示字符的 Unicode 码点。
"\u0061"
// "a"字符串的遍历器接口
ES6 为字符串添加了遍历器接口(详见《Iterator》一章), 使得字符串可以被for...of循环遍历。
for (let codePoint of 'foo') {
console.log(codePoint)
}
// "f"
// "o"
// "o"模板字符串
传统的 JavaScript 语言,输出模板通常是这样写的(下面使用了 jQuery 的方法)
$('#result').append(
'There are <b>' + basket.count + '</b> ' +
'items in your basket, ' +
'<em>' + basket.onSale +
'</em> are on sale!'
);上面这种写法相当繁琐不方便, ES6 引入了模板字符串${}解决这个问题。
$('#result').append(`
There are <b>${basket.count}</b> items
in your basket, <em>${basket.onSale}</em>
are on sale!
`);实例方法
String.prototype.includes()String.prototype.startsWith()String.prototype.endsWith()String.prototype.repeat()String.prototype.padStart(),String.prototype.padEnd()String.prototype.trimStart(),String.prototype.trimEnd()
includes(), startsWith(), endsWith()
传统上, JavaScript 只有indexOf方法, 可以用来确定一个字符串是否包含在另一个字符串中。ES6 又提供了三种新方法。
String.prototype.includes():返回布尔值, 表示是否找到了参数字符串String.prototype.startsWith():返回布尔值, 表示参数字符串是否在原字符串的头部String.prototype.endsWith():返回布尔值, 表示参数字符串是否在原字符串的尾部
let s = 'Hello world!';
s.startsWith('Hello') // true
s.endsWith('!') // true
s.includes('o') // true这三个方法都支持第二个参数, 表示开始搜索的位置。
let s = 'Hello world!';
s.startsWith('world', 6) // true
s.endsWith('Hello', 5) // true
s.includes('Hello', 6) // falserepeat()`
repeat()方法返回一个新字符串, 表示将原字符串重复n次。
'x'.repeat(3) // "xxx"
'hello'.repeat(2) // "hellohello"
'na'.repeat(0) // ""padStart()`, padEnd()
ES2017 引入了字符串补全长度的功能。如果某个字符串不够指定长度, 会在头部或尾部补全。padStart()用于头部补全, padEnd()用于尾部补全
'x'.padStart(5, 'ab') // 'ababx'
'x'.padStart(4, 'ab') // 'abax'
'x'.padEnd(5, 'ab') // 'xabab'
'x'.padEnd(4, 'ab') // 'xaba'trimStart()`, trimEnd()
ES2019 对字符串实例新增了trimStart()和trimEnd()这两个方法。它们的行为与trim()一致, trimStart()消除字符串头部的空格, trimEnd()消除尾部的空格。它们返回的都是新字符串,不会修改原始字符串。
const s = ' abc ';
s.trim() // "abc"
s.trimStart() // "abc "
s.trimEnd() // " abc"Last updated on