字符串的扩展方法
String.fromCodePoint(uni-str)
定义:返回字符,可识别大于0xFFFF的字符,String.fromCharCode则不能识别
用法:String.fromCodePoint()
注意:若包含多个参数,则合并后再返回
String.raw()
定义:返回一个斜杠也被转义的字符串,用于模板字符串的处理
用法:String.raw......
注意:当不使用模板字符串时,第一个参数是一个具有raw属性的对象,且值为模板字符串解析后的数组(见字符串的扩展那节),剩余参数是大括号括起来的变量
举例:
javascript
String.raw({raw: ['hello ', ' world ']}, 1 + 2)
<=<=<=<=<=<=<=<=<=<=<=<=<=<=<=<=<=<=<=<=<=<=<=
`hello ${1 + 2} world `
1
2
3
2
3
实例方法:codePointAt(index)
- JavaScript内部字符是以utf-16的格式储存的,每个字符固定为2个字节,对于需要4个字节储存的字符(0xFFFF),JavaScript会认为是2个字符
- charPointAt(index)读取索引,若未使用3中的方法读取,假设只有一个字符,则index为0时为该字符,index为1时为该字符的后两个字节(即为空)
- 对于4个字节储存的字符,使用索引来读取的化,是会发生错位的(JavaScript会认为是2个字符),解决如下:
- 使用for……of循环该字符串
- 使用扩展运算符进行展开运算变成数组,然后遍历(或读取索引)
实例方法:normalize(uni-str)(🟢)
定义:用于合成字符,比如欧洲语言的重音符号
实例方法:includes(str, start-index), startsWith(str, start-index), endsWith(str, start-index)
- includes:是否找到了字符串
- 其他两个表示是否在开头/结尾找到字符串
实例方法:repeat(number)
定义:返回一个新的字符串,将原字符串重复n的最小整数次,n不可为负数/infinity
- 参数是(-1, 0)之间的数,会返回-0,同等于0
- 参数是NaN,同等于0
- 参数是字符串,会先转为数字
实例方法:padStart(length, str),padEnd()
定义:es2017引入的,若字符串不够第一个参数的长度,则会用第二个参数进行开头/结尾的补全
- 原字符串长度等于/大于第一个参数长度,补全不生效
- 补全的字符串+原字符串大于参数长度,则补全的字符串只截取部分
- 补全的字符串+原字符串小于参数长度,会再次进行补全
- 省略第二个参数,则默认用空格补全
用途:
- 为数值补全指定位数(例如数值前缀)
实例方法:trimStart()/trimLeft,trimEnd()/trimRight
定义:es2019增加了对字符串首尾空白的处理,返回一个新的字符串
实例方法:matchAll()
定义:返回正则表达式在当前字符串的所有匹配
实例方法:replaceAll()(🔵)
定义:用第二个参数替换第一个参数(全局模式)
- 第一个参数可以是re/str,当为re时,需要使用/g模式
- 第二个参数可以是函数,函数的返回值当作第二个参数的结果,也可以使用一些特殊的文本,当第一个参数是re时,可使用re中的一些匹配,比如:
- $&,表示匹配的字符串
- $n,表示匹配成功的第n组内容
- $`,表示匹配字符串前面的内容
- $',表示匹配字符串后面的内容
- $$,表示美元符号