JavaScript字符串操作

news/2024/11/19 17:46:58/

ASCII(as key) 字符集(了解)

我们都知道,计算机只能存储 0101010 这样的二进制数字,那么我们的 a ~ z / A ~ Z / $ / @ /… 之类的内容也有由二进制数字组成的

我们可以简单的理解为, a ~ z / A ~ Z / $ / @ /… 之类的内容都有一个自己的编号,然后在计算机存储的时候,是存储的这些编号,我们看的时候,也是通过这些编号在解析成我们要看到的内容给我们看到

image.png

image.png

unicode 编码

我们看到了,ASCII 只有这 128 个字符的编码结构,但是因为 ASCII 出现的比较早,而且是美国发明的,早先时候这些内容就够用了

因为存储一些英文的内容,传递一些英文的文章什么的都够用了,那么对于这个世界来说肯定是不够用的 。因为我们的汉字没有办法存储,包括一些其他国家的语言也没有办法存储

所以就出现了 unicode 编码,也叫(万国码,统一码)

unicode 对照表就是一个和 ASCII 一样的对照表,只不过变得很大很大,因为存储的内容特别的多,而且包含了世界上大部分国家的文字,所以我们的文字和字符现在在存储的时候,都是按照 unicode 编码转换成数字进行存储

我们的 UTF-8 就是一种 8 位的 unicode 字符集

国标编码GBK

国标码是汉字的国家标准编码,目前主要有GB2312、GBK、GB18030三种。GB2312编码方案于1980年发布,收录汉字6763个,采用双字节编码。

GBK编码方案于1995年发布,收录汉字21003个,采用双字节编码。

GB18030编码方案于2000年发布第一版,收录汉字27533个;2005年发布第二版,收录汉字70000余个,以及多种少数民族文字。GB18030采用单字节、双字节、四字节分段编码。

字符串

什么是字符串

字符串是一种数据类型,是连续的字符序列,由数字,字母和符号组成。在字符串的每个字符只占用一个字节,在JS内用单引号、 双引号或者反引号(ES6中称为模板字符串)包裹

什么是包装数据类型

存储的时候, 是以基本数据类型的形式进行存储,当你使用它的时候, 会瞬间转换成复杂数据类型的样子让你使用

等你使用完毕, 瞬间转换成基本数据类型的形式进行存储

在基本数据类型中有3个特殊的存在:String Number Boolean

这3个基本类型都有自己对应的包装对象。包装对象其实就是对象,有相应的属性和方法。调用方法的过程是在偷偷发生的,所以我们称为基本包装类型

创建字符串

我们创建字符串也分为两种方法 字面量构造函数

字面量: var 变量名 = ‘值’

// 字面量的方式创建字符串 
var str = 'hello world' 
var str1 = "hello world" 
console.log(typeof str) 
console.log(typeof str1)

内置构造函数创建

// 内置构造函数的方式创建字符串 
var str2 = new String('hello world') 
console.log(str2); 
console.log(typeof str2); 
console.log(str === str1); 
console.log(str == str2);

字符串操作

length 属性操作

length属性是一个 只读 的属性, 只能获取不能设置

读取

■语法:字符串.length

○返回值:获取到的就是该字符串的长度, 也就是字符串有多少个字符组成

○注意:空格也是一个字符,中文也是一个字符

// 创建一个字符串 
var str = 'hello world' 
console.log('原始数据 : ', str); 
// length 属性 
var s1 = str.length 
console.log(s1);

索引属性操作

○是一个 只读 的属性, 只能获取不能设置

读取

■语法:字符串[索引]

○返回值:获取到的就是该字符串指定索引位置的那一位字符

■如果有该索引位置, 那么就是该索引位置的字符

■如果没有该索引位置, 那么就是 undefined

○索引从0开始,依次加1

// 创建一个字符串 
var str = 'hello world' 
console.log('原始数据 : ', str); 
// 索引 
var res = str[4] // 0 
console.log(res); 
var res1 = str[100] 
console.log(res1); // undefined

遍历

// 定义一个字符串 
var str = 'hello world' 
// 遍历 
for (var i = 0; i < str.length; i++) { console.log(str[i])
}

案例–统计字符出现的次数

var str = 'abcabcsghgjgfdgdfhfhdsfsdgsh' 
// 我们要有个对象 
var obj = {} 
// 循环遍历该字符串 
for (var i = 0; i < str.length; i++) { // console.log(str[i]); // 我们拿到了字符串中的每一项,我们要把这个当做我们对象的键 // 因为我们后面要多次用到每一项所以我们可以单独用一个变量接收一下 var s = str[i] // 我们是不是要先看看我们的对象里面有没有这个数据,如果有我们就让它++就好 // 如果没有我们就给它添加一个 // 问题来了: 如何判断对象里面有没有,如果对象里面没有这个键 返回的是undefinedconsole.log(obj.a); if (obj[s] === undefined) { obj[s] = 1} else { obj[s]++ } 
} 
console.log(obj);

http://www.ppmy.cn/news/50988.html

相关文章

Linux服务器出现503 服务不可用错误怎么办?

​  HTTP 503 服务不可用错误代码表示网站暂时不可用。无论您是网站访问者还是管理员&#xff0c;503 页面都很麻烦。尽管该错误表明存在服务器端问题&#xff0c;但对于访问者和网络管理员来说&#xff0c;有一些可能的解决方案。本文将解释Linux服务器出现503 服务不可用错…

微服务下网关聚合Swagger文档、starter统一配置Swagger

一、starter实现统一配置微服务文档 把Swagger配置中的公共部分抽取出来Swagger与SpringBoot整合中&#xff0c;可能会由于版本问题出现各种问题 1、制作starter 参考&#xff1a; 【SpringBoot】自定义启动器 Starter【保姆级教程】用starter实现Oauth2中资源服务的统一配置用…

GenericJackson2JsonRedisSerializer

GenericJackson2JsonRedisSerializer 对于这个不存在的属性, 需要标注为忽略, 否则, 反序列化时, 会报错。 主要也是因为&#xff0c;我们拿不到GenericJackson2JsonRedisSerializer中的mapper&#xff0c;不然&#xff0c;是可以修改mapper的反序列化特性的&#xff0c;把map…

最小生成树|二分图

最小生成树跟边的正负没有任何关系。 最小生成树 朴素Prime 该算法和Dijkstr算法很像。 先把所有距离初始化为正无穷 进行n次迭代 找到不在集合&#xff08;集合指当前的生成树&#xff09;当中的点&#xff0c;s数组表示当前已经在连通块&#xff08;生成树&#xff09;中的所…

同步辐射X射线断层扫描成像在各行业的应用

同步辐射X射线断层扫描成像在各行业的应用 同步辐射X射线断层扫描成像&#xff08;synchrotron radiation X-ray computed tomography&#xff0c;SRCT&#xff09;是一种非侵入式、高分辨率的成像技术&#xff0c;利用同步辐射光束产生的高强度、高亮度、单色性和相干性的X射线…

网络基础-IP和端口号以及认识传输层协议

概念回顾 MAC地址仅需要在同一个局域网下唯一&#xff0c;就可以保证不会出现通讯问题。 通信的目的是两台机器上的应用软件要通信。即客户端进程和服务端进程要获取这个数据&#xff0c;借助主机来完成通信。故将数据在主机间转发仅仅是手段&#xff0c;机器收到后&#xff…

浅谈拉格朗日插值法

浅谈拉格朗日插值法 好像FFT要用到&#xff0c;所以就学习一手 文章目录 浅谈拉格朗日插值法什么是插值拉格朗日插值法 什么是插值 在离散数据的基础上补插连续的函数&#xff0c;使得这条连续函数经过所有离散数据点&#xff0c;这个过程就叫插值。其意义在于&#xff1a; …

Docker 部署 MySQL 一主多从

主从复制的原理&#xff1a; 1、主库&#xff1a; 创建一个有权访问binlog日志的从库账号&#xff0c;配置需要主从复制的库 有写操作时&#xff0c;可以将写操作或者写操作之后的数据记录到日志文件中(binlog) 通过一个线程通知需要同步数据…