ECMAScript 6 中的 String 新特性

510 查看

这篇博客介绍了ECMAScript 6(ES6)中字符串的新特性。

Unicode 代码点转义

Unicode 字符(代码点/code point)21位长 [2]。JavaScript 字符串(大约)16位字符序列,编码为utf-16。因此,超出第一个16位代码点范围(基本的多语种窗格,BMP)的代码点是由两个JavaScript字符表示。直到现在,如果你想通过数字指定这样的代码点,你需要两个所谓的Unicode转义。作为一个例子,下面的语句在大部分控制台输出一个rocket(代码点0x1f680):

在ECMAScript 6中,有一种新的Unicode转义,允许您指定任何代码点:

字符串插值,多行字符串和原始字符串字面值

模板字符串 [3]有三个有趣的特性。

首先,模板字符串支持字符串插值:

第二,模板字符串可以包含多行:

第三,如果你用 String.raw 标记字符串前缀,则模板字符串是“原始“的,反斜杠将不是特殊字符,转义符比如 n并不被解释:

遍历字符串

字符串可以迭代[4],这意味着您可以使用for-of来迭代他们:

您可以使用 spread 操作符 (…) 将字符串转化为数组:

处理Unicode代码点

字符串迭代器从代码点的边界分割字符串,这意味着它返回的字符串包含一个或两个字符:

下面是一个快速计算一个字符串的 Unicode 代码点长度的方法: