首页 > 其他分享 >ES6+ 字符串的扩展

ES6+ 字符串的扩展

时间:2023-01-15 10:32:03浏览次数:35  
标签:ES6 log 字符 扩展 Unicode str 字符串 字节


1. 前言

由于历史原因,在 JavaScript 创建之初,市面上的编码方式还是很混乱的,JavaScript 在创建之初,使用的是 1990 年公布的 UCS-2 的编码方法,使用 2 个字节表示 1 个字符,那时 UTF-8、UTF-16、UTF-32 还没有完全确定。现在的 JavaScript 主要使用的是 UTF-16 来存储的。

但针对于纷繁复杂的网页字符是不能完全地覆盖的,在早期使用浏览器时,经常会在浏览器中选择字符串编码方式。那么有没有一种编码可以涵盖世界上的所有字符呢?答案是有的 ——Unicode。它是一个字符集,它的定义很简单,用一个码点 (code point) 映射一个字符。码点值的范围是从 U+0000 到 U+10FFFF,可以表示超过 110 万个符号。

所以后来的 ECMAScript 一直致力于解决历史遗留的问题和统一浏览器的编码方式。这时 ES6 出来了,对 Unicode 进行了加强,也修复了 ES5 中的问题。在 模版字符串 的小节中已经学习了关于字符串模板字符串的内容,本节我们继续学习 ES6 中字符串其他的扩展。

2. Unicode

Unicode 只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。所以出现了 Unicode 的多种存储方式,不同的实现导致了 Unicode 在很长一段时间内无法推广,而且本来英文字母只用一个字节存储就够了,如果 Unicode 统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有二到三个字节是空,这对于存储来说是极大的浪费,文本文件的大小会因此大出二三倍,这是无法接受的。

首先我们来看下一个字符是怎么表示的,JavaScript 提供了 ​​charCodeAt()​​ 获取指定位置的字符的值,返回的值在 0 到 65535 之间的整数。

var str = '';
console.log(str.charCodeAt(0)); // 24917 转成十六进制 0x6155
console.log(str.charCodeAt(1)); // 35838 转成十六进制 0x8bfe
console.log(str.charCodeAt(2)); // NaN

看上面代码打印结果,并转成十六进制了,而 Unicode 表示是把前面的 0x 换成 u,这就是 Unicode 的表示。在 ES5 中还存在一个问题,实例如下:

let str = '

标签:ES6,log,字符,扩展,Unicode,str,字符串,字节
From: https://blog.51cto.com/10zhancom/6008327

相关文章

  • ES6+ includes()
    1.前言字符串查找一直都是程序中的常用操作,在ES5中查找一个字符串是否包含另一个字符串,一般有两种思维。一是使用正则的方式来匹配,二是使用ES5的方式,如indexOf、lastI......
  • 【补档 12th Jan】1807 替换字符串中的括号内容(每日一题)
    【补档12thJan】1807替换字符串中的括号内容(每日一题)给你一个字符串s,它包含一些括号对,每个括号中包含一个非空的键。比方说,字符串"(name)is(age)yearsold"中,有......
  • ES6-遍历器与for-of循环
    一认识Iterator对象(可遍历对象)console.log([1,2]);console.log([1,2][Symbol.iterator]);//ƒvalues(){[nativecode]}//方括号的方式调用,Sym......
  • 扩展中国剩余定理
    学习扩展中国剩余定理前需要学习扩欧求逆元。\(\left\{\begin{matrix}x\equivc_{1}(\modm_{1})\\x\equivc_{2}(\modm_{2})\end{matrix}\right.\)\(x=c_{1}+m_{1}......
  • [VueJsDev] 基础知识 - ES6循环使用手册
    ES6循环使用手册:::details目录目录​ES6循环使用手册​​​Array.1:filter()方法​​​​Array.2:forEach​​​​Array.3:for循环​​​​Array.4:map()循环​......
  • C++中如何将一行字符串(一行字符串可带空格)输入到string对象中或者字符数组中?
    提供两种方法:①、使用cin的成员函数getline,代码如下:charstr1[20];cin.getline(str1,20);     //第一个参数代表字符数组的指针,第二个参数代表写入的最大长度②、......
  • Stata:字符串函数
    我们在做数据清理时经常会遇到字符型变量的清理问题,Stata提供了大量、功能强大的字符函数,灵活运用字符函数可以高效、快速、精确、准确地清理数据。本文为大家介绍一些常用......
  • 字符串处理
    《面对字符串输入的情况》  想这个输入格式我该如何输入?这样即可:scanf("%d:(%d)",&s,&cnt); 《字符串哈希》对于字符串str长度为n,可以在O(n)的时间内解......
  • XML及JSON扩展方法,方便快速解析
    #regionXML扩展方法///<summary>///从xml节点中获取指定属性的数据,如果不存在该属性则返回默认值///</summary>///<typeparamname="T">xml数据的数据类型</type......
  • 6-STA扩展
    1.Tool是怎么计算Celldealy&Netdelay的?Celldelay:根据cell的输入transition和输出load通过查表从library中得到celldelay和输出transition,在library的......