以前用到字符串的方法时候,并不会深刻的去思考其中的原理,所以在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 = "

ES6字符串操作讲解(详细),字符串编码表,代码单元,码点的详细介绍。的更多相关文章

  1. ES6字符串操作

    讨论字符串操作之前,我们先来了解一下Unicode 编码的由来,因为Js中的字符串就是一系列Unicode码的集合. 我们都知道,世界上存在着各种各样的语言,汉语,英语,日语等,相对应的,也就存在各种 ...

  2. pycharm上传代码到码云(详细)

    如要转载 麻烦请您备注好原文出处!!!!(谢谢合作!) >>首先要去码云注册个账号 提示(尽量使用英文名)创建用户名 使用邮箱登录 >>然后创建库  >填写项目的基础信息 ...

  3. Java字符串中有多少个字符多少个char、字节

    Java 中Char是两个字节,Char在Java中也被称为代码单元(Code Unit) . Java中的字符与代码点(Code Unit)一 一对应,而可能对应一个或者两个 代码单元 字符串的le ...

  4. 深入学习Java中的字符串,代码点和代码单元

    在Java字符串处理时,在使用length和charAt方法时,应该格外小心,因为length返回的是UTF-16编码表示下的代码单元数量,而非我们所认为的字符的个数,charAt方法返回的是指定位置 ...

  5. [Effective JavaScript 笔记] 第7条:视字符串为16位的代码单元序列

    Unicode编码,基础:它为世界上所有的文字系统的每个字符单位分配一个唯一的整数,该整数介于0~1114111之间,在Unicode术语中称为代码点(code point). 和其它字符编码几乎没有 ...

  6. C语言字符串操作总结大全(超详细)

    本篇文章是对C语言字符串操作进行了详细的总结分析,需要的朋友参考下 1)字符串操作  strcpy(p, p1) 复制字符串  strncpy(p, p1, n) 复制指定长度字符串  strcat( ...

  7. c语言的字符串操作(比较详细)

    1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度 ...

  8. 有关UNICODE、ANSI字符集和相关字符串操作

    Q UNICODE字符串如何显示 A 如果程序定义了_UNICODE宏直接用 WCHAR *str=L"unicodestring"; TextOut(0,0,str); 否则就需 ...

  9. python基础之 列表、元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...

随机推荐

  1. 手写Future模式

    根据前面我所说的Futrue模式,手写一个: 分别对应的Java代码,大家拿来参考: package FutureTest; //公共data数据接口 public abstract class Da ...

  2. ubuntu的ufw如何开放特定端口?

    ubuntu的ufw如何开放特定端口? 1.安装 sudo apt-get install ufw 2.开启 sudo ufw enable 默认关闭外部访问 sudo ufw default den ...

  3. hdu-5724 Chess(组合游戏)

    题目链接: Chess Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Others) Pro ...

  4. Ubuntu 16.04上安装SkyEye及测试

    说明一下,在Ubuntu 16.04上安装SkyEye方法不是原创,是来自互联网,仅供学习参考. 一.检查支持软件包 gcc,make,vim(optional),ssh,subversionbinu ...

  5. BZOJ_4154_[Ipsc2015]Generating Synergy_KDTree

    BZOJ_4154_[Ipsc2015]Generating Synergy_KDTree Description 给定一棵以1为根的有根树,初始所有节点颜色为1,每次将距离节点a不超过l的a的子节点 ...

  6. Battle Ships(复习泛化物品**)

    传送门Battle Ships Time Limit: 2 Seconds      Memory Limit: 65536 KB Battle Ships is a new game which i ...

  7. [hdu1277]全文检索(AC自动机)

    解题关键:AC自动机模板题,注意字符匹配时若无法匹配,直接用%s即可. #include<bits/stdc++.h> using namespace std; typedef long ...

  8. node本地服务启动报Error: listen EADDRINUSE解决方法

    Error: listen EADDRINUSE 127.0.0.1:1337 at Object.exports._errnoException (util.js:1018:11) at expor ...

  9. java一些jar包的bug(不定期更新)

    c3p0-0.9.5.jar 连接池jar包,常用于web项目,关闭连接池时,没有注销所有的driver 解决:可声明一个ServletContextListener的子类并设置监听,重写contex ...

  10. 无法打开包括文件:“SDKDDKVer.h”: No such file or directory

    在已经装有Visual Studio 2010的系统中,同时安装Visual Studio 2012,安装过程很顺利,但到使用VS2013时,却出问题了. 本文主要介绍:VS中新建工程编译时出现,“无 ...