ES6学习-7 字符串的扩展

1、字符串的Unicode表示

  ES6 加强了对 Unicode 的支持,允许采用\uxxxx形式表示一个字符,其中xxxx表示字符的 Unicode 码点。

  如 a 可以用 "\u0061"表示。这种表示法只限于码点在\u0000~\uFFFF之间的字符(大约可以表示65000多个字符)。

  如果超了怎么办?按我们正常的理解,一位表示不开用两位表示不就完了,事实上也是如此,比如下面这个生屁字:"𠮷" 就可以用 "\uD842\uDFB7"表示。但这样挺浪费空间的,这个字超过了FFFF,码点为:20BB7,相当于多进了一位而已。但如果写成\u20BB7,ES6是不认的,但ES6提供了方法,可以识别这种编码,即把编码放到{}中,如前面的\u20BB7 就可以写成\u{20BB7}。下面是几个例子的代码:

let a="\u0061";
console.log(a); //输出 a

let a="\uD842\uDFB7";
console.log(a); //输出 𠮷

let a="\u{20BB7}";
console.log(a); //输出 𠮷

2、字符串的遍历接口

  ES6的字符串可以使用遍历器接口,用for of进行字符串的遍历。

let youname="郭大𠮷";
for (let tmpChar of youname) {
  console.log(tmpChar)
}
//
//
//𠮷

  用这种方式遍历字符串时,可以不用考虑超出\uFFFF码点的字符串,循环都会得到正确的结果。

3、模版字符串

  模板字符串(template string)是增强版的字符串,用反引号(`)标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量个人感觉模版字符串是ES6的闪光点之一,使许多复杂的字符拼接工作变得简单美观。

let str=`这是一个模版字符串
我会换行
     我会缩进,我就是这么任性`;
console.log(str)

  上面的代码会按格式原封不动的输出定义的模板字符串,包插换行,空格等效果。

let name="郭郭";
let age=18;

let str=`you name is ${name},you age is ${age}`;
console.log(str); // 输出 you name is 郭郭,you age is 18

  上面的代码,会自动用变量的值替掉${变量},生成最后需要的字符串。

4、字符串的新增方法

  ES6 对字符串新增了许多方法,挑重点的简单列一下吧。

  String.fromCodePoint()  从 Unicode 码点返回对应字符,主要是解决超过FFFF码点的问题。对应老的函数为String.fromCharCode(),ES6中尽量使用新的函数。

  String.raw()  该方法返回一个斜杠都被转义(即斜杠前面再加一个斜杠)的字符串。

  includes()  该方法返回一个字符串是否包含指定的字符串,包含返回true,不包含返回false。

  startsWith()  该方法返回一个字符串是否以指定的字符串开头。

  endsWith() 该方法返回一个字符串是否以指定的字符串结尾。

  repeat(n) 方法返回一个新字符串,表示将原字符串重复n次。

  padStart()padEnd() 字符串补全长度。如果某个字符串不够指定长度,会在头部或尾部补全。padStart()用于头部补全,padEnd()用于尾部补全。

  trimStart()trimEnd() 行为与trim()一致,trimStart()消除字符串头部的空格,trimEnd()消除尾部的空格。

  matchAll()  方法返回一个正则表达式在当前字符串的所有匹配

  replaceAll() 方法,可以一次性替换所有匹配。

 

posted @ 2021-05-31 22:58  郭郭老师  阅读(76)  评论(0编辑  收藏  举报