ES6字符串操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES6字符串操作相关的知识,希望对你有一定的参考价值。
Unicode编码,指的是Unicode编码字符集,所谓的编码字符集指的是Unicode会为每一个字符分配一个唯一的数字,从而形成的一张映射表格,其中这个唯一的数字也称之为码点(code point) 。例如“严”字在Unicode中对应的码点是U+0x4E25。
代码单元(code unit), 是编码字符集进入到计算机的世界才出现的概念。因为编码字符集只是一张映射表格,它就放到哪里,计算机中怎么使用这张表格, 说白了,就是在计算机中怎么表示这些唯一的数字(码点)? 因为计算机中全是二进制,我们要用多少个字节来表示一个数字,可能是由于当时常用的字只有65535个,所以决定用16个字节来表示一个数字,这就是UTF-16的来历,js中也是用utf-16 来表示单个字符的。
这16个字节能表示的数字(0~65535)就叫做代码单元。 但是对于一些不常用的字符怎么处理,就是有的字符的码点超过了65535, 如66785, 在计算机中怎么表示,js的做法是两个代码单元(两个16字节)来表示。
Js 中有一个字符串方法,charCodeAt(), 它可以取到字符的代码单元。
<script> let text = "??"; console.log(text.charCodeAt(0)); // 55362 console.log(text.charCodeAt(1)) // 57271 </script>
可以看到 ?? 是有两个代码单元组成。这就有问题了,我们明明看到的是一个字,它确有两个代码单元组成,ES6为了解决这个问题,新增了一个方法codePointAt(),它直接返回的是字符的码点。
let text = "??"; console.log(text.codePointAt(0)); // 134071
有了codePointAt() 方法,肯定还要有一个相反的方法,通过码点来返回字符,那就是fromCodePoint
console.log(String.fromCodePoint(134071)) //??
以上是关于ES6字符串操作的主要内容,如果未能解决你的问题,请参考以下文章