ES2015之字符串扩展

270 阅读2分钟

这是我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战

字符串扩展

ES2015的标准增加了:Unicode即字符串扩展,这篇文章我们就来了解一下什么是字符串扩展。

Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。Unicode用数字0-0x10FFFF来映射这些字符,最多可以容纳1114112个字符,或者说有1114112个码位。码位就是可以分配给字符的数字。UTF-8UTF-16UTF-32都是将数字转换到程序数据的编码方案。

如何使用

用 Unicode 表示字符串

1.\u

我们可以用\u为前缀 加 Unicode码位来表示字符串,如下:

console.log("\u0061"); // a

从上可以看出我们可以用\u0061来表示字符串a。但是我们需要注意:这种表示法只限于码点在\u0000~\uFFFF之间的字符,如果超出这个范围的字符,必须用两个双字节的形式表示,如下:

console.log("\uD842\uDFB7"); // 𠮷

那如果超出这个范围又用一个字节,结果会是什么样子呢?我们一起来看一下:

console.log("\u20BB7"); // ₻7
  1. \u{} 超出范围,我们可以用\u{}来表示字符串,只要将码点放入大括号,就能正确解读该字符,如下:
console.log("\u{20BB7}"); // 𠮷

方法

1.match

该方法检索返回一个字符串匹配正则表达式的结果,使用如下:

console.log("𠮷".match(/./u)); // [ '𠮷', index: 0, input: '𠮷', groups: undefined ]

1.codePointAt

该方法返回 一个 Unicode 编码点值的非负整数,使用如下:

"𠮷".codePointAt(0) == 0x20BB7 ; // true

1.for...of 遍历

字符串也可以用for...of 遍历,使用如下:

for (let c of "也笑") {
    console.log(c);
}

注意事项

建议使用\u{}的方式来表示字符串,因为它不必担忧字符码点在\u0000~\uFFFF之间的限制,但扩展的 Unicode 转义值必须介于(含) 0x00x10FFFF 之间。

总结

字符串可以用for遍历,但是不明白𠮷的码位是怎么计算的,有知道的xdm,请留言指教一下,谢谢。

如果你想了解ES的其他特性,请移步到 ES2015+碎片化学习,每天都在向前走一步,这是所有文章的目录入口。