第2章 字符串和正则表达式
这一章主要介绍了ES6中字符串和正则表达式中的一些(语法上的)更新。下面,我将对平时开发用到比较多的地方提炼出来,供大家阅读使用。
1. 更好的Unicode支持。
先说一下前提,在字符串中,字符串里面的字符有两种:一种是有一个编码单元16位表示的BMP字符;另一种是由两个编码单元32位表示的辅助平面字符。这两种字符是不一样的。
1.1 normalize()方法。
这个方法接受一个可选的字符串,然后将该字符串转化为相应的标准Unicode的形式,然后可以进行字符串的比较。以确保即使两个字符串原来分别是16位字符和32位字符也照样可以比较。
1.2 正则表达式 u修饰符
其实这个添加的 u 修饰符,其目的也是为了帮助字符从编码单元操作模式转化为字符模式,然后带 u 修饰符的正则表达式就可以由原来匹配编码单元改为匹配字符。这样用起来就更加正常化了。
2. 其他字符串变更。
这一节里面,主要说了几个处理字符串和字串之间关系的方法。
2.1 includes() 方法。用于识别当前字符串中是否包含了某一个子串。
2.2 startsWith()方法。顾名思义,找到以某一个子串开始的字符串。
2.3 endsWith()方法。同样,从后往前查找是否包含某一个子串。
2.4 repeat()方法。该方法接受一个number类型的参数,然后将调用该方法的字符串重复n次,返回该字符串。
例如:
1 console.log( "hello".repeat(2) ); // "hellohello"
3. 其他正则表达式语法变更
3.1 正则表达式 y 修饰符。
该属性会通知搜索正则表达式的 lastIndex 属性开始进行,如果在指定位置没有匹配成功,则停止继续匹配。
3.2 flags属性。
在ES6的版本中,添加了正则表达式的 flags 属性,该属性可以返回所有应用于当前正则表达式的修饰符字符串。
4. 模板字面量。
这个就是一对反撇号(``)这个比较有意思,也是比较核心的一个知识点。简单概括来说,可以分为三点:
4.1 利用它可以实现输出多行字符串。以前的时候,多行字符串依靠拼接,然后加上换行符。有了这个反撇号后就可以直接拼出来多行字符串,并且显示的时候也是多行的字符串。
4.2 利用它可以实现占位符功能。声明一个变量,然后可以使用 ${ } 来取出这个变量的值。例如:
1 let name = "Steven", 2 message = `Hello, ${name}.`; 3 4 console.log(message); // "Hello, Steven."
4.3 模板标签。这个因为平时用的不是很多。所以,这里简单讲一个思路,有兴趣的同学可以找原书中的细节以及代码。
这个模板标签究竟是干什么的呢?简单说,它就是一个包含了反撇号表达式的函数。这个函数以反撇号表达式作为参数,然后标签名就是这个函数的函数名。
(本节完)