'u{1F680}' === 'uD83DuDE80'
大括号表示法与四字节的UTF-16编码是等价的。
JavaScript共有6种方法可以表示一个字符:
'z' === 'z' // true '172' === 'z' // true 'x7A' === 'z' // true 'u007A' === 'z' // true 'u{7A}' === 'z' // true
codePointAt
方法是测试一个字符由两个字节还是由四个字节组成的最简单方法。
fromCodePoint
方法定义在String
对象上,可识别>0xFFFF
的字符,而codePointAt
方法定义在字符串的实例对象上。
for..of最大的优点是可以识别大于0xFFFF
的码点.
ES6提供字符串实例的normalize()
方法,用来将字符的不同表示方法统一为同样的形式,这称为Unicode正规化。
normalize()有四个参数:NFC(默认值,表示“标准等价合成”)、NFD(表示“标准等价分解”)、NFKC(表示“兼容等价分解”)、NFKD(表示“兼容等价分解”)
includes(), startsWith(), endsWith()
传统上,JavaScript只有indexOf
方法,可以用来确定一个字符串是否包含在另一个字符串中。ES6又提供了三种新方法。
includes():返回布尔值,表示是否找到了参数字符串。
startsWith():返回布尔值,表示参数字符串是否在源字符串的头部。
endsWith():返回布尔值,表示参数字符串是否在源字符串的尾部。
这三个方法都支持第二个参数,表示开始搜索的位置。
repeat()
方法返回一个新字符串,表示将原字符串重复n
次。
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'
不加第二个参数默认使用空格填补。