字符串的扩展
1.字符的Unicode标示法
(1)将码点放入大括号,就能正确解读ES5超出范围的字符(\u0000~\uFFFF)
(2)js共有6种方法可以表示一个字符
- '\z' === 'z'
- '\172' === 'z'
- '\x7A' === 'z'
- '\u007A' === 'z'
- '\u{7A}' === 'z'
2.codePointAt()
(1)ES5中charCodeAt()的优化
(2)正确处理4个字节存储的字符,返回一个字符的码点
(3)codePointAt(字符在字符串中的位置[从零开始])
(4)测试一个字符是由2个字节还是由4个字节组成的最简单的方法
3.String.fromCodePoint()
(1)ES5中String.fromCharCode()的优化
(2)识别大于0xFFFF的字符
(3)如果有多个参数,它们会被合并成一个字符串返回
(4)定义在String对象上
4.字符串的遍历器接口
(1)遍历字符串
Test
(2)可以识别大于0xFFFF的码点
5.at()
(1)ES5中charAt()的优化
(2)识别Unicode编号大于0xFFFF的字符,返回正确的字符
(3)通过垫片库实现(ps: 垫片库是啥?)
6.normalize()
(1)用来将字符的不同表示方法统一成同样的形式,称为Unicode正规化
(2)normalize('指定normalize的方式')
- NFC 默认参数 返回字符的合成形式
- NFD 标准等价分解 返回字符的分解形式
- NFKC 兼容等价合成
- NFKD 兼容等价分解
(3)目前不能识别三个或者三个以上字符的合成
7.includes()/startsWith()/endsWith()
(1)includes('要搜索的字符串', '开始搜索的位置到结尾') 返回布尔值,表示是否找到了参数字符串
(2)startsWith('要搜索的字符串', '开始搜索的位置到结尾') 返回布尔值,表示参数字符串是否在原字符串的头部
(3)endsWith('要搜索的字符串', '前n个字符到开始搜索的位置') 返回布尔值,表示参数字符串是否在原字符串的尾部
Test
8.repeat()
(1)返回一个新字符串,表示将原字符串重复n次
(2)如果参数是小数,会被取整
(3)参数不能是负数或者Infinity
(4)如果参数是-1~0,则转换为0
(5)如果参数是NAN,则转换为0
(6)如果参数是字符串,则先转换为数字
Test
9.padStart()/padEnd()
(1)padStart('指定字符串的最小长度', '用来补全的字符串') 如果字符串不够指定长度,用于在头部补全
(2)padEnd('指定字符串的最小长度', '用来补全的字符串') 如果字符串不够指定长度,用于在尾部补全
(3)入股原字符串的长度等于或大于指定的最小长度,则返回原字符串
(4)如果用来补全的字符串与原字符串,两者的长度之和超过了指定的最小长度,则截取超出位数的补全字符串
(5)如果省略第二个参数,默认使用空格补全长度
(6)padStart()主要用途是为数值补全指定位数
(7)padStart()另一个用途是提示字符串格式
Test
10.模板字符串
(1)增强版的字符串,用反引号(`)标识,可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量
(2)如果在模板字符串中需要使用反引号,则前面要用反斜杠转义
(3)使用模板表示多行字符串,所有的空格和缩进都会被保留在输出之中
(4)模板字符串中嵌入变量,需要将变量名写在${}之中
(5)${'任意的js表达式、可以进行运算、可以引用对象属性、可以调用函数'}
(6)模板字符串中的变量没有声明,将报错
(7)模板字符串可以嵌套
Test