ES6字符串操作讲解(详细),字符串编码表,代码单元,码点的详细介绍。
以前用到字符串的方法时候,并不会深刻的去思考其中的原理,所以在es6新增的这些方法里就有点蒙圈了,于是想要搞清楚为什么会新增这些方法,以及如何使用这些方法。
在博客园上看见一篇大神SamWeb的总结,很是详细,讲解透彻,故,引用于此,望莫失莫忘。
地址: https://www.cnblogs.com/SamWeb/p/7091469.html
ES6字符串操作
讨论字符串操作之前,我们先来了解一下Unicode 编码的由来,因为Js中的字符串就是一系列Unicode码的集合。
我们都知道,世界上存在着各种各样的语言,汉语,英语,日语等,相对应的,也就存在各种各样的字符,如汉语就是对应我们博大精深的汉字,英语则对应着英文字符,各种不同的字符存在,也导致各国制定各自不同的标准,来使用字符存储在计算机上,如Ascii 码表,GBK表,这就导致了一个问题,各国之间的文件不能够交换使用,容易出现乱码问题。这时国际标准化组织就想把各国的字符都统一起来,把它们放到一张码表中,然后在这张表中,给每一个字符都分配一个数字,成为这个字符的唯一的标识符,由于每个字符都对应唯一的一个数字,所以不会出现冲突。这张表就是Unicode码表或Unicode编码字符集,这个数字又叫做码点(Code Point). 码表的样子如下
通过这张表,我们可以看到字符和数字的一一对应关系。 丽 ---> 数字4E3D, 充 -----> 数字5145, 注意这里的数字都是用的16进制。
想法是美好的,但是怎么落实到计算机中呢?怎么在计算中表示这些码点呢? 因为计算机中全是二进制,我们要用多少个字节来表示一个数字,这时出现了不同的实现方案,就是我们经常听说的UTF-8, UTF-16, UTF-32等, UTF-16 就是使用16个bit 位, 也就是两个字节来表示一个码点,这16个字节叫做代码单元(code unit),很明显这里有一个问题,两个字节的能够表示的最大数是65535, 如果码点超出了65535怎么处理? 比如码点134071, 那就用两个代码单元进行表示。
Js 中对字符串的操作就是基于以上理论进行实现的,你可能还记得charCodeAt方法,它就是获取的代码单元
<script>
let text = "最新文章
- Sql判断不为Null也不为空的写法
- @html.ActionLink的几种参数格式
- 【SQL篇章】【SQL语句梳理 :--基于MySQL5.6】【已梳理:ALTER TABLE解析】
- Linux 网络编程详解二(socket创建流程、多进程版)
- 如何带领一个Android开发团队
- (转载)读取xml中的指定节点的值
- appdata文件夹有什么用途?C盘appdata可以删除吗?
- 用Delphi实现文件关联
- MR中的combiner和partitioner
- Google Reader的另一个开源的替代品Go Read
- java项目测试log4j
- hibernate 一对多操作(级联操作)
- SRM 583 Div II Level One:SwappingDigits
- Java学习笔记16(面向对象九:补充内容)
- IP地址与域名的关系
- 下拉菜单css
- JavaScript 高性能数组去重
- Zookeeper+Kafka完全分布式实战部署
- 疫苗:JAVA HASHMAP的死循环
- 20145325张梓靖 《网络对抗技术》 Web安全基础实践
热门文章
- HDU5950 Recursive sequence —— 矩阵快速幂
- win8.1 保护眼睛的颜色设置
- 自建 AppRTC
- Rsync+Inotify同步
- hdu 1028 &; hdu 1398 —— 整数划分(生成函数)
- docker 学习(四) springboot + docker
- mptcp文献汇总
- TypeScript完全解读(26课时)_1.TypeScript完全解读-开发环境搭建
- mysql添加DATETIME类型字段导致Invalid default value错误的问题
- C和FORTRAN的快速傅里叶/余弦/正弦变换(Fast Fourier/Cosine/Sine Transform)开源库分享