这是我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战
字符串扩展
ES2015的标准增加了:Unicode即字符串扩展,这篇文章我们就来了解一下什么是字符串扩展。
Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。Unicode用数字0-0x10FFFF来映射这些字符,最多可以容纳1114112个字符,或者说有1114112个码位。码位就是可以分配给字符的数字。UTF-8、UTF-16、UTF-32都是将数字转换到程序数据的编码方案。
如何使用
用 Unicode 表示字符串
1.\u
我们可以用\u为前缀 加 Unicode码位来表示字符串,如下:
console.log("\u0061"); // a
从上可以看出我们可以用\u0061来表示字符串a。但是我们需要注意:这种表示法只限于码点在\u0000~\uFFFF之间的字符,如果超出这个范围的字符,必须用两个双字节的形式表示,如下:
console.log("\uD842\uDFB7"); // 𠮷
那如果超出这个范围又用一个字节,结果会是什么样子呢?我们一起来看一下:
console.log("\u20BB7"); // ₻7
\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 转义值必须介于(含) 0x0 和 0x10FFFF 之间。
总结
字符串可以用for遍历,但是不明白𠮷的码位是怎么计算的,有知道的xdm,请留言指教一下,谢谢。
如果你想了解ES的其他特性,请移步到 ES2015+碎片化学习,每天都在向前走一步,这是所有文章的目录入口。