第二章、字符串和正则表达式
1、在ES6出现前后的编码差异:16位的编码单元和32位的编码单元
使用codePointAt()检测字符占用的编码单元数量,原理是16位的编码单元字符上限是0xFFFF
function is32Bit(c){
return c.codePointAt(0) > 0xFFFF;
}
根据字符获取码位:codePointAt()
根据码位获取字符:String.fromCodePoint()
2、字符串的标准化方法:normalize()
参数:"NFC"/"NFD"/"NFKC"/"NFKD"
切记:在比较排序字符串之前,将被操作字符串按照统一标准进行标准化。
3、正则表达式的u修饰符:表示正则表达式匹配的时候将编码单元操作模式切换为字符模式,如此,32位的字符就可以被匹配。
4、字符串中的子串识别:includes()、startsWith()、endsWith()、indexOf()、lastIndexOf()
5、repeat():根据某个字符生成重复的字符
6、正则表达式的复制:
let reg1 = /ab/i;
reg2 = new RegExp(reg1,"g");
以上代码将正则表达式reg1复制了一份,并且修改了修饰符为g
7、获取正则表达式的修饰符:flags
let re = /ab/g;
console.log(re.source); //"ab"
console.log(re.flags); //"g"
8、模板字面量:
①、简化的多行字符串实现:反单引号,但要注意换行的空白缩进
let message = `hello
world`;
console.log(message); //"hello
//world"
②、字符串占位符:${JavaScript表达式}
let nme = "word";
let message = `hello ${name}`;
console.log(message); //"hello word"
③、标签模板