内置对象的概念
内置对象:指JS语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或者是最基本必要的功能(属性和方法)。
常见的内置对象:Math对象、日期对象Date()、数组对象、 字符串对象
字符串对象
1.创建字符串的两种方式
1.直接通过字面量创建为原始值
const string1 = '晚饭吃什么'
const string2 = 'McDonalds'
2.通过String().构造函数创建为字符串对象
const string3 = new String('This is a String Object')
2.访问字符
有两种方式访问字符串中的单个字符,第一种是 charAt() 方法:
//传入一个参数,返回一个由给定索引处的单个字符构成的新字符串
//取到'吃'
console.log('晚饭吃什么'.charAt(2))
第二种是直接将字符串视为类数组对象,其中各个字符对应于一个数字索引。
console.log('晚饭吃什么'[2])//取到'吃'
charAt() 和使用方括号表示法访问指定索引处的字符非常相似。它们的主要区别在于:
charAt()尝试将index转换为整数,而方括号表示法不会,直接使用index作为属性名。- 如果
index超出范围,charAt()返回一个空字符串,而方括号表示法返回undefined。
3.常用的字符串方法集合
String.charAt() - - 获取index位置处的字符
String.charCodeAt(index) - - 获取index位置处字符的unicode编码
String.concat() - - 字符串连接
String.indexOf()- - 查找符合条件的第一个字符串所在下标
String.lastIndexOf() - - 查找符合条件的第一个字符串所在下标(从后往前查)
String.match()--用于将正则表达式与字符串匹配
String.slice() - - 截取子字符串
String.split() - - 切割字符串不传值的话就是直接把字符串用数组包起来,传值就是以值为分割。
String.replace(oldString, newString) - - 替换
String.prototype.toLocaleUpperCase( [locale, ...locales])- - 转换为大写
String.prototype.toLocaleLowerCase() - - 转换为小写
String.trim() - - 去掉前后空白
String.trimStart() - - 去除头部空白
String.trimEnd() - - 去除尾部空白
插播一下:什么东西是Unicode编码ಠ_ಠ?
Unicode简介
Unicode,官方中文名称“统一码”。通常大家谈到的 Unicode 一般指字符集的意思,但 Unicode 标准实际涵盖两个方面的内容:
- Unicode 字符集
- Unicode 编码
众所周知,计算机不能直接识别字符串,它只能处理二进制数据也就是0和1,所以要想计算机搞懂我们霹雳巴拉写了些啥,我们需要一种方法将文本(字符串)转换为计算机可以理解和处理的二进制格式。
1.Unicode字符集
Unicode字符集就像一本全球通用的“字典”,为世界上几乎所有的字符分配了一个唯一的编号,称为码点。例如:
- 字母
A的Unicode码点是U+0041 - 汉字
一的Unicode码点是U+4E00 - 表情符号😊的Unicode码点是
U+1F60A
Unicode 字符集规定了字符对应的唯一码点,但在实际的传输、存储过程中,为了兼顾各系统平台的差异、节省空间,需要对字符集进行编码——将对应的码点转换成另一种格式,即Unicode转换格式(Unicode Transformation Format,简称 UTF)。
2.Unicode编码
Unicode 编码规则(UTF)决定了码点如何在文件中显示,我们熟知的UTF-8 UTF-16就是编码规则的不同版本。
UTF-8和UTF-16
它们的作用就是定义了如何将Unicode的码点转换成实际存储或传输时使用的二进制序列。
我们HTML头部的这句代码就是在声明文档的字符编码规则为UTF-8,它告诉浏览器在解析HTML文档时应该使用UTF-8编码规则来正确显示网页内容。
UTF-8 编码过程(了解)
UTF-8 是一种针对 Unicode 的可变长度字符编码,根据码点的大小,将其编码为 1 到 4 个字节,具体规则如下:
U+0000 - U+007F: 0xxxxxxx (1个字节)
U+0080 - U+07FF: 110xxxxx 10xxxxxx (2个字节)
U+0800 - U+FFFF: 1110xxxx 10xxxxxx 10xxxxxx (3个字节)
U+10000 - U+10FFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx (4个字节)
「中」的码点为U+4E2D,由上表可知,它属于第三行,被编码成三个字节:
4 E 2 D
0100 1110 0010 1101
-----------------------------
1110xxxx 10xxxxxx 10xxxxxx // 上表第三行
____0100 __111000 __101101 // 将 4E2D 的二进制带入上面的格式中
-----------------------------
11100100 10111000 10101101
以上就是字符「中」经过 UTF-8 编码后得到字节序列的过程,反之亦然。
让我们来看看计算机怎么识别‘A’的
- 输入字符:你输入了一个字符,比如字母
A。 - 查找码点:根据Unicode标准,计算机内部有一个映射表,它会自动将这个字符转换成相应的Unicode码点
U+0041 - 选择编码格式:决定使用哪种编码格式(如UTF-8或UTF-16)来将这个码点转换成二进制数据。
-
- 如果使用UTF-8,
U+0041会被转换成二进制序列01000001(即1个字节)。 - 如果使用UTF-16,
U+0041会被转换成二进制序列00000000 01000001(即2个字节)。
- 如果使用UTF-8,
- 存储或传输:计算机现在可以处理这些二进制数据,将其存储在文件中或通过网络发送给其他计算机。现在你写的'A'就是计算机能搞懂的东西了。
那我们获取Unicode编码能干嘛?
- 密码强度检查: 在用户注册或更改密码时,检查密码强度是一个常见的需求。你可以使用字符编码值来确定密码是否包含足够的字符类型(如大写字母、小写字母、数字和特殊字符)
- 数据加密和解密: 我们可能需要对敏感信息(如用户名、密码)进行简单的加密或解密操作。虽然对于生产环境应该使用更安全的加密算法,但在测试或简单应用中,基于字符编码的加密可以作为一种快速解决方案。
- 国际语言: 在构建支持多语言的Web应用程序时,我们需要确保文本能够正确显示,并且用户输入也能被正确处理。这可能涉及到不同语言字符的处理和转换。