ES6--字符串的扩展

字符的Unicode表示法

1、Unicode表示法:\uxxxx(四字节UTF-16编码),xxxx表示字符的Unicode码点。范围是0000~FFFF,超出此范围使用两个双字节表示。ES6中将超出范围的码点放入大括号{}中,即可正确解读该字符。

自己的理解:\uxxxx是字符的Unicode表示法,0xxxxx,是字符的16进制Unicode码点。

codePointAt()

1、Javascript内部,字符以UTF-16的格式存储,每个字符2个字节。Unicode码点大于0xFFFF的字符,Javascript认为它们是两个字符,四个字节。

2、codePointAt可以正确返回四字节字符的编码,不过其参数不正确,修复此问题可以使用for…of循环,它可以正确识别32的UTF-16字符。

3、codePointAt方法是测试一个字符由两个字节还是由四个字节组成的最简单方法。

4、此方法定义在字符串实例上。

String.fromCodePoint()

1、用于从码点返回对应字符,可以识别32位UTF-16字符。

2、支持多个参数,将其合并为一个字符串返回。

3、此方法定义在String对象上

字符串的遍历器接口

1、ES6为字符串添加了遍历器,所以可以被for…of循环遍历。可以识别大于0xFFFF的码点。传统的for循环无法识别。

normalize()

用时再查

includes(),startsWith(),endsWidth()

1、includes():返回布尔值,表示是否找到了参数字符串

2、startsWith():返回布尔值,表示参数字符串是否在原字符串的头部

3、endsWidth():返回布尔值,表示参数字符串是否在原字符串的尾部

三个方法都支持第二个参数,前两个方法第二个参数表示开始搜索的位置,第三个方法表示针对前n个字符。

repeat()

该方法返回一个新字符串,参数表示字符串重复几次。

padStart(),padEnd()

某字符串不够指定长度,会在头部或尾部补全。

1、padStart():用于头部补全

2、padEnd():用于尾部补全

3、两个方法接受两个参数:第一个参数是字符串补全生效的最大长度,第二个参数是用来补全的字符串。

4、用来补全的字符串和原字符串,两者的长度之和超过了最大长度,会截去超出位数的补全字符串。

5、第二个参数省略,默认使用空格补全长度。

6、padStart()两个常见用途:(1)数值补全指定位数(2)提示字符串格式

matchAll()

正则扩展章节

模板字符串

1、模板字符串使用反引号 (`) 标识

2、模板字符串可以是单行、多行

3、模板字符串中可以嵌入变量,需要将变量名写在${}之中,大括号中可以使变量、表达式、函数。

4、模板字符串中的反引号需要使用反斜杠转义

5、模板字符串可以嵌套

标签模板

1、它是函数调用的一种特殊形式。“标签”指的就是函数,紧跟在后面的模板字符串就是它的参数。

2、第一个参数:是一个数组,该组成员是模板字符串中没有变量替换的部分。变量替换发生在第1个成员和第2个成员之间,第2个成员和第3个成员之间,以此类推。

3、其他参数:模板字符串各个变量被替换后的值。

4、“标签模板”应用:过滤HTML字符串,防止用户恶意输入内容;多语言转换

5、标签模板接受的参数实际是一个数组,该数组有一个raw属性,保存的是转义后的原字符串。

String.raw()

1、可以作为处理模板字符串的基本方法,会将所有变量替换,对斜杠进行转义。

2、作为正常函数使用,函数实现如下:

String.raw = function (strings, ...values) {
  let output = '';
  let index;
  for (index = 0; index < values.length; index++) {
    output += strings.raw[index] + values[index];
  }
  output += strings.raw[index]
  return output;
}

模板字符串的限制

模板字符串默认会将字符串转义,导致无法嵌入其他语言。所以在ES2018放松了只对标签模板里面的字符串转义限制。如果遇到不合法的字符串转义,不会报错,而是返回undefined,并且从raw属性上面可以得到原始字符串。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值