字符串扩展
- 1.字符的 Unicode 表示法
- ES6 对这一点做出了改进,只要将码点放入大括号,就能正确解读该字符。
- 2.codePointAt()
- JavaScript 内部,字符以 UTF-16 的格式储存,每个字符固定为2个字节。对于那些需要4个字节储存的字符(Unicode 码点大于0xFFFF的字符),JavaScript 会认为它们是两个字符。
- ES6 提供了codePointAt方法,能够正确处理 4 个字节储存的字符,返回一个字符的码点。
- 3.String.fromCodePoint()
- ES5 提供String.fromCharCode方法,用于从码点返回对应字符,但是这个方法不能识别 32 位的 UTF-16 字符(Unicode 编号大于0xFFFF)
- ES6 提供了String.fromCodePoint方法,可以识别大于0xFFFF的字符,弥补了String.fromCharCode方法的不足。在作用上,正好与codePointAt方法相反。
字符串的遍历器接口 - ES6 为字符串添加了遍历器接口(详见《Iterator》一章),使得字符串可以被for...of循环遍历。
- 除了遍历字符串,这个遍历器最大的优点是可以识别大于0xFFFF的码点,传统的for循环无法识别这样的码点。
- 4.at()
- ES5 对字符串对象提供charAt方法,返回字符串给定位置的字符。该方法不能识别码点大于0xFFFF的字符。
- 目前,有一个提案,提出字符串实例的at方法,可以识别 Unicode 编号大于0xFFFF的字符,返回正确的字符。
- 5.normalize()
- ES6 提供字符串实例的normalize()方法,用来将字符的不同表示方法统一为同样的形式,这称为 Unicode 正规化。
- 6.includes(), startsWith(), endsWith()(2个参数,第一个字符串,第二个第几位开始)
- includes():返回布尔值,表示是否找到了参数字符串。
- startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。
- endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。
- 7.repeat()(参数是数字)
- repeat方法返回一个新字符串,表示将原字符串重复n次。
padStart(),padEnd()(第一个参数是字符串长度,第二个参数是要循环的字符串) - ES2017 引入了字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全。padStart()用于头部补全,padEnd()用于尾部补全。
- repeat方法返回一个新字符串,表示将原字符串重复n次。
- 8.matchAll()
- matchAll方法返回一个正则表达式在当前字符串的所有匹配,详见《正则的扩展》的一章。
模板字符串(可以保留标签或者变量值) - ` 会保留空格 ${(放入变量,甚至js代码)}
- matchAll方法返回一个正则表达式在当前字符串的所有匹配,详见《正则的扩展》的一章。
- 9.实例:模板编译
- 10.标签模板
- 11.String.raw()
- String.raw方法,往往用来充当模板字符串的处理函数,返回一个斜杠都被转义(即斜杠前面再加一个斜杠)的字符串,对应于替换变量后的模板字符串。
模板字符串的限制
- String.raw方法,往往用来充当模板字符串的处理函数,返回一个斜杠都被转义(即斜杠前面再加一个斜杠)的字符串,对应于替换变量后的模板字符串。