首页 > 代码库 > ES6字符串操作
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字符串操作
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。