《深入理解ES6》读书笔记——2.字符串和正则表达式
1)更好的unicode支持
javascript字符串是基于16位字符编码(UTF-16)进行构建。
(1)codePointAt()方法:
作用:返回 一个 Unicode 编码点值的非负整数。
语法:str.codePointAt(pos)
参数:pos 这个字符串中需要转码的元素的位置。
返回值:返回值是在字符串中的给定索引的编码单元体现的数字,如果在索引处没找到元素则 返回 undefined 。
(2)String.fromCodePoint()方法: codePointAt的相反的方法
作用:返回使用指定的代码点序列创建的字符串。
(3)normalize()方法:
作用:按照指定的一种 Unicode 正规形式将当前字符串正规化。(如果该值不是字符串,则首先将其转换为一个字符串)。
(4)u修饰符
ES6 对正则表达式添加了u修饰符,含义为“Unicode 模式”,用来正确处理大于\uFFFF的 Unicode 字符。也就是说,会正确处理四个字节的 UTF-16 编码。
2)其他字符串变更
(1)字符串中的子串识别
includes() startsWith() endsWith()
都接受两个参数:第一个,要搜索的字符串。第二个,可选的,指定一个开始搜索的位置。
都返回布尔值
如果你需要在一个字符串中寻找另一个子字符串的实际位置,还需使用indexOf()或lastIndexOf()
对于includes() startsWith() endsWith(),传入正则表达式会报错。但对于indexOf()或lastIndexOf()则会把正则转化成一个字符串并搜索它。
(2)repeat()方法
作用:构造并返回一个新字符串,该字符串包含被连接在一起的指定数量的字符串的副本。
语法:str.repeat(count)
参数:number类型的参数。介于 0 和 [+Infinity]之间的整数。表示在新构造的字符串中重复了多少遍原字符串。
3)其他正则表达式语法变更
(1)正则表达式y修饰符
“粘连”(sticky)修饰符
作用:匹配从目标字符串的当前位置开始。
(2)正则表达式的复制
使用RegExp构造函数复制,第一个参数为正则表达式,第二个参数(可选)修改其修饰符
(3)flags属性
作用:返回正则表达式的修饰符。
只读的原型属性访问器
ES5 的 source 属性 返回正则表达式的正文
/abc/ig.source // "abc"
ES6 的 flags 属性 返回正则表达式的修饰符
/abc/ig.flags // 'gi'
4)模板字面量
(1)基础语法
用反引号(`)标识。
如果你想使用`,用反斜杠\转义即可
(2)多行字符串
ES6只需在代码中直接换行
想创造前后空格直接留白即可,而且可以使用trim()来移除
(3)字符串占位符
${ 表达式 }
一个模板字面量里可以嵌入另外一个
(4)标签模板
标签就是一个函数,标签后的模板字符串就是它的参数。
参数:标签函数的第一个参数包含一个字符串值的数组。其余的参数与表达式相关。
(5)在模板字面量中使用原始值
String.raw()