文章目录
- 一、什么是字符
- 二、什么是包装数据类型(了解)
- 三、创建字符串
- 四、字符串操作
- 五、字符编码和字符集
- ASCII(as key) 字符集(了解)
- unicode 编码 ***
- 国标编码GBK(汉字内码扩展规范)
- 字符编码的转换
- 六、练习
一、什么是字符
- 字符是一种数据类型,是一种原始数据,typeof结果为string
- 标志为引号:单引号’,双引号",反引号`
- 其中 单双引号内不支持回车换行,反引号内支持
- 反引号内还支持使用
${}
解析变量- 如:
这次考试成绩第一名为${ firstName }同学
- 如:
- 字符串就是连续的字符序列,可以由任意字符组成。字符串的每个字符都占用一个字节
二、什么是包装数据类型(了解)
- 在js的基本数据类型中,有3个特殊的存在:
string
,number
,boolean
- 数据存储时,都是以基本数据类型的形式进行存储
- 当使用它时,会瞬间转换成 复杂数据类型 的形式被我们使用
- 使用完毕后,瞬间转换成 基本数据类型 的形式进行存储
- 这3个基本类型都有自己对应的包装对象。包装对象其实就是对象,有相应的属性和方法。调用方法的过程是在偷偷发生的,所以我们成为基本包装类型
- 字符对象:
new String()
- 数值对象:
new Number()
- 布尔对象:
new Boolean()
- 字符对象:
三、创建字符串
- 字面量:
var str = '值'
var str1 = 'hello world';
console.log(str1);
console.log(typeof str1);
- 内置构造函数创建:
var str = new String("值")
var str1 = new String("hello world");
console.log(str1);
console.log(typeof str1);
- 区别:构造函数创建出来的数据为字符对象,typeof的结果为object,但是可以作为正常字符使用
四、字符串操作
- 字符不允许任何方式修改自身,都是以返回值的形式出现结果
- 原理操作:索引 + length
- 字符串中的每个字符采用了类似于数组中数据的存储方式,有索引和长度
- 长度:
str.length
- 索引:
str[index]
- 索引从0开始,到length-1结束
- 方法操作
- 功能,参数,返回值
str.indexOf()
str.charAt()
str.slice()
str.substr()
str.substring()
str.split()
str.replace()
str.toUpperCase()
str.toLowerCase()
str.trim()
str.trimStart()
和str.trimLeft()
str.trimEnd()
和str.trimRight()
str.repeat()
str.startsWith()
str.endsWith()
str.includes()
五、字符编码和字符集
ASCII(as key) 字符集(了解)
- 我们都知道,计算机只能存储 0101010 这样的二进制数字
- 那么我们的 a ~ z / A ~ Z / $ / @ /… 之类的内容也有由二进制数字组成的
- 我们可以简单的理解为, a ~ z / A ~ Z / $ / @ /… 之类的内容都有一个自己的编号,在计算机存储的时候,是存储的这些编号,呈现给用户时,这些编号再解析成人类能识别的符号
- 美国将自己会用到的字符分别设定了对应的编号,并在计算机中使用,我们称这套编号叫ASCII 字符集(美国信息交换标准代码)
- 以下就是 ASCII 对照表:
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采用单字节、双字节、四字节分段编码。
字符编码的转换
- 字符转编码:
str.codePointAt(索引)
- 编码转字符:
String.fromCodePoint(参数)
- 参数:0x开头的十六进制,十进制,不支持\u的字符编码
六、练习
- 字符去重,封装函数,返回去重之后的字符
- 统计字符串中每个字符出现的次数,以对象存储结果,封装函数,返回对象
- “aabccc”
- { a:2, b:1, c:3 }
- 判断字符串是否是回文字符串,封装函数,返回布尔值
- xxx(“abccba”); // true
- xxx(“abcba”); // true
- xxx(“abcde”); // false
- xxx(“abccda”); // false
- 敏感词过滤
- 原文:今天天气很好,我们开开心心去上学,今天天气很好
- 敏感词:好,开心,上学
- 过滤结果:今天天气很***,我们开心去,今天天气很***