IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> JavaScript _ 字符串 -> 正文阅读

[JavaScript知识库]JavaScript _ 字符串

目录

1. 初识字符串

2.?字符串的基本操作

3. 字符集 -?ASCII 编码

4.?字符串常用方法

5. 图例


1. 初识字符串

字符串 :
+ 字符串是一个 JS 内的 基本数据类型
+ 同时也是一个 包装数据类型
+ 在 JS 内用 单引号 或者 双引号 包裹的内容就叫做 字符串
包装数据类型
+ 在浏览器中存储的时候, 是按照 基本数据类型 的形式进行 存储
+ 当你使用它的一瞬间, 会马上转化成 复杂数据类型 的形式让你 使用
+ 等你使用完毕, 会瞬间转换成 基本数据类型 的形式进行存储
字符串的创建方式
1. 字面量方式创建
? => 语法:
?? ?-> var str = 'hello world'
?? ?-> var str = "hello world"

// 1. 字面量方式创建 字符串
var str1 = 'hello world'
var str2 = "hello world"
console.log(str1)	// hello world
console.log(str2)	// hello world
console.log(str1 === str2)	// true

2. 内置构造函数创建
? => 语法: var str = new String('hello world')
+ 两种创建方式创建出来的字符串一模一样
? => 在使用上没有任何区别
? => 在存储上也没有任何区别

// 2. 内置构造函数创建 字符串
var str3 = new String('hello world')
var str4 = new String('hello world')
console.log(str3)	// String?{"hello world"}
console.log(str4)	// String?{"hello world"}
console.log(str1 + 100)	// hello world100
console.log(str2 + 100)	// hello world100
console.log(str3 + 100)	// hello world100
console.log(str4 + 100)	// hello world100

console.log(str1 == str3)	// true
console.log(str1 === str3)	// false
console.log(str2 == str3)	// true
console.log(str2 === str3)	// false

console.log(str3 == str4)	// false
console.log(str3 === str4)	// false

console.log(typeof str1); //string
console.log(typeof str2); //string
console.log(typeof str3); //object
console.log(typeof str4); //object

console.log(str1 == str2 == str3) // false ( string == string 为true , true != object )

String( )是 JS 的内置对象之一。new String( )每调用一次,不管其字符串值是否相等,是否有必要创建新对象,都会 创建一个 对象

执行?var str3 = new String('hello world') ;?通过用 new( )?新建一个对象,存放于 堆内存 中。然后栈中创建引用变量 str3 ,并且存放堆中对象的地址,指向该对象。

由于隐式类型转换的原因,所以 str1 == str3 结果是 true ,但 str1 === str3 结果是 false 。

同理 , 执行?var str4 = new String('hello world') ,?会再次new一个新的对象,存放于堆内存中。每调用一次就会创建一个新的对象。然后栈中创建引用变量str4,存放堆中再次创建的对象的地址,指向新建的对象。

所以 str3 和 str4 存放的是不同的 堆地址 ,指向 不同的 对象 。地址值不一样,所以两次判断都是 false 。


2.?字符串的基本操作

1. 字符串有一个 length 属性
? + 是一个 只读 的属性, 只能获取不能设置
? + 读:
?? ?=> 语法: 字符串.length
? + 得到: 该字符串的长度
?? ?=> 获取到的就是该字符串的长度, 也就是字符串有多少个字符组成
?? ?=> 注意: 字符串内的 空格 也是占用一个字符长度的
?? ?=> 一个中文也是一个字符长度

// 1. length 属性
// 读取 str 的 length
var str = 'hello world'
console.log(str.length)	// 11
// 设置 str 的 length => 尝试修改, 不能修改
str.length = 100 // 设置没有意义
console.log(str)	// hello world
console.log(str.length)	// 11

2. 字符串有一个 索引 属性
? + 是一个 只读 的属性, 只能获取不能设置
? + 读:
?? ?=> 语法: 字符串[索引]
? + 得到: 该索引位置的数据
?? ?=> 获取到的就是该字符串指定索引位置的那一位字符
?? ? ?-> 如果字符串有该索引位置, 那么就是该索引位置的字符
?? ? ?-> 如果字符串没有该索引位置, 那么就是 空字符串 undefined
? + 索引: 从 0 开始, 依次 +1

// 2. 索引属性
// 使用索引读取文本
var str = 'hello world'
console.log(str[4])	// o
// 尝试修改 => 使用索引设置
str[4] = 'z'
console.log(str)	// hello world
console.log(str[4])	// o

3. 遍历字符串
? + 使用 for 循环进行遍历字符串
? + 因为字符串的索引是一组有规律的数字
? + 循环可以提供一组有规律的数字

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

?


3. 字符集 -?ASCII 编码

+ ASCII 读做 :? as key

+ 其实就是一个 文字 和 二进制的 对照表
? => 每一个文本的存储, 其实都是以 二进制 的形式存储在 硬盘内
? => a 这个文本存成什么样的 二进制
? => 约定一个对照表, 不同的文本内容, 对应一个固定的 二进制 数字
+ 因为最早的计算机是 美国人 发明的
? => 最早的计算机对照变只有 128 个字符
? + 把这 128 个字符的 序号 的 编码 一一对应起来, 发布一个规则
? => 出现了一个对照表, 这个对照表就叫做 ASCII 编码字符集对照表

每一个字符的编码
? ? ? ? + 每一个计算机可以识别的字符编了一个序号
? ? ? ? + 每一个序号都能对应的转换成 二进制数据
? ? ? ? ? => 假设编号是 1, ? ?0001
? ? ? ? ? => 假设编号是 2, ? ?0010
? ? ? ? ? => 假设编号是 3, ? ?0011
? ? ? ? ? => 假设编号是 4, ? ?0100
? ? ? ? + 在计算机存储的时候, 就是按照 二进制数字 进行存储
? ? ? ? ? => 当你使用各种软件打开文件的时候
? ? ? ? ? => 计算机会自动把 二进制 转换成你需要识别的内容

万国码 / 统一码
+ unicode 编码
+ 也是一个对照表, 大型的对照表
+ 前 128 个和 ASCII 编码一样
+ 从 128 个以后, 开始加入了全世界各个国家的文字
+ 在网络上传递, 因为是全世界通用
+ 每一个文字都有对应的 二进制 数字编码
+ 有一种 unicode 的变种编码, 是一个 八位 的 unicode 编码
=> web 统一了一个编码格式
+ 取名叫做 UTF-8 专门用于 web 应用
+ 针对中国, 有一个为我们自己的编码叫做 GBK
国标编码 :
+ GBK
+ 前 128 个是 ASCII 编码
+ 后面的都是中文
+ 适用于中国人编码

编码的乱码 ?
+ 我目前这个文件是按照 utf-8 格式存储的
+ 假设我存储了一个 "中" 字, 编号存储的 20000
+ 如果我换成 GBK 格式打开文件, 编号 20000 不一定是 "中"
+ 它把 20000 转换成文本就是 另外一个文字了


4.?字符串常用方法

+ 字符串常用方法为什么会出现 ?
=> 因为字符串并不好操作
+ 字符串常用方法的统一语法
=> 字符串.xxx( )
+ 注意: 所有字符串常用方法, 都不会改变原始字符串, 都是以返回值的形式出现结果

1. toLowerCase( )
=> 语法: 字符串.toLowerCase( )
=> 作用: 把字符串内的所有字母转换成 小写
=> 返回值: 转换好的字符串
2. toUpperCase( )
=> 语法: 字符串.toUpperCase( )
=> 作用: 把字符串内的所有字母转换成 大写
=> 返回值: 转换好的字符串

// 1. toLowerCase()
var str = 'heLlO WoRld'
console.log('原始字符串 : ', str)
var res = str.toLowerCase()
console.log('返回值 : ', res)//返回值 :  hello world
// 2. toUpperCase()
var str = 'heLlO WoRld'
console.log('原始字符串 : ', str)
var res = str.toUpperCase()
console.log('返回值 : ', res)//返回值 :  HELLO WORLD

3. charAt( )
=> 语法: 字符串.charAt(索引)
=> 作用: 找到字符串中该索引位置所表示的字符
=> 返回值: 该索引位置的对应字符
? -> 如果有该索引位置, 那么就是该索引位置的字符
? -> 如果没有该索引位置, 那么就是 空字符串 ''
4. charCodeAt( )
=> 语法: 字符串.charCodeAt(索引)
=> 作用: 找到字符串中该索引位置对应字符的 编码(unicode 编码)十进制

// 3. charAt()
var str = 'hello world'
console.log('原始字符串 : ', str)
var res = str.charAt(4)//返回值 :  o
console.log('返回值 : ', res)
// 4. charCodeAt()
var str = 'hello world'
console.log('原始字符串 : ', str)
var res = str.charCodeAt(4)
console.log('返回值 : ', res)//返回值 :  111

5. substr( )
=> 语法: 字符串.substr(开始索引, 多少个)
=> 作用: 截取字符串
=> 返回值: 截取出来的字符串
6. substring( )
=> 语法: 字符串.substring(开始索引, 结束索引)
? ->特点 : 包前不包后
=> 作用: 截取字符串
=> 返回值: 截取出来的字符串

// 5. substr()
console.log('substr(2, 7)')
var str = 'hello world'
console.log('原始字符串 : ', str)
// 表示从 [2] 开始向后截取 7 个字符
var res = str.substr(2, 7)
console.log('返回值 : ', res)//返回值 :  llo wor
// 6. substring()
console.log('substring(2, 7)')
var str = 'hello world'
console.log('原始字符串 : ', str)
// 表示从 [2] 截取到 [7], 包含 [2] 不包含 [7]
var res = str.substring(2, 7)
console.log('返回值 : ', res)//返回值 :  llo w

7. slice( )
=> 语法: 字符串.slice(开始索引, 结束索引)
? -> 包前不包后
? -> 可以填写负整数
=> 作用: 截取字符串
=> 返回值: 截取出来的字符串

// 7. slice()
console.log('slice(2, 7)')
var str = 'hello world'
console.log('原始字符串 : ', str)
// 表示从 [2] 截取到 [7], 包含 [2] 不包含 [7]
var res = str.slice(2, -4)
console.log('返回值 : ', res)//返回值 :  llo w

8. split( )
=> 语法: 字符串.split('分隔符号')
-> 可以不传递, 会把完整字符串当做一个整体
-> 传递一个空字符串(''), 会一位一位的切割
=> 作用: 把字符串按照分隔符号分割开,成为一段一段的内容,放在一个数组里面
=> 返回值: **是一个数组数据类型**
? -> 里面存放的内容就是按照分隔符分开的每一部分的内容

// 8. split()
var str = '2021-08-20-hello-世界'
console.log('原始字符串 : ', str)
var res = str.split('-')
console.log('返回值 : ', res)

?

9. replace( )
=> 语法: 字符串.replace('换下字符', '换上字符')
=> 作用: 进行字符串替换
? -> 使用换上字符, 把原始字符串内的 换下字符 替换掉
=> 注意: 如果字符串内有多个 换下字符, 只能替换第一个
=> 返回值: 替换好的字符串

// 9. replace()
var str = 'hello world'
console.log('原始字符串 : ', str)
// 换下和换上字符, 不一定只能写一个字符
var res = str.replace('rl', '☆★☆')
console.log('返回值 : ', res)//返回值 :  hello wo☆★☆d

10. trim( )
=> 语法: 字符串.trim( )
=> 作用: 去除字符串首尾的空白内容
=> 返回值: 去除空白内容以后的字符串

// 10. trim()
var str = '  abcd  '
console.log('原始字符串 : ', str)
console.log('原始字符串 : ', str.length)
var res = str.trim()
console.log('返回值 : ', res)
console.log('返回值 : ', res.length)


11. trimStart( ) / trimLeft( )
=> 语法:
? -> 字符串.trimLeft( )
? -> 字符串.trimStart( )
=> 作用: 去除字符串前面的空白内容
=> 返回值: 去除前面空白内容以后的字符串

// 11. trimLeft() / trimStart()
var str = '  abcd  '
console.log('原始字符串 : ', str)
console.log('原始字符串 : ', str.length)
// 去除前面的空白
// var res = str.trimLeft()
var res = str.trimStart()
console.log('返回值 : ', res)
console.log('返回值 : ', res.length)

?=>?
12. trimEnd( ) / trimRight( )
=> 语法:
? -> 字符串.trimRight( )
? -> 字符串.trimEnd( )
=> 作用: 去除字符串后面的空白内容
=> 返回值: 去除后面空白内容以后的字符串

// 12. trimRight() / trimEnd()
var str = '  abcd  '
console.log('原始字符串 : ', str)
console.log('原始字符串 : ', str.length)
// 去除后面的空白
// var res = str.trimRight()
var res = str.trimEnd()
console.log('返回值 : ', res)
console.log('返回值 : ', res.length)

13. concat( )
=> 语法: 字符串.concat(字符串)
=> 作用: 字符串拼接
=> 返回值: 拼接好的字符串

// 13. concat()
var str = 'hello world'
console.log('原始字符串 : ', str)
var res = str.concat('你好 世界')
var res = str + '你好 世界'
console.log('返回值 : ', res)//返回值 :  hello world你好 世界

14. indexOf( )
=> 语法:
? -> 字符串.indexOf('字符串片段')
? -> 字符串.indexOf('字符串片段', 开始索引)
=> 作用: 查找该字符串片段在原始字符串中出现第一次的索引位置
=> 返回值:
? -> 如果有该字符内容, 那么就是该字符对应的索引位置
? -> 如果没有该字符内容, 就是 -1
15. lastIndexOf( )
=> 语法:
? -> 字符串.lastIndexOf('字符串片段')
? -> 字符串.lastIndexOf('字符串片段', 开始索引)
=> 作用: 从后向前查找字符串片段在原始字符串中出现第一次的索引位置
=> 返回值:
? -> 如果有该字符内容, 那么就是该字符对应的索引位置
? -> 如果没有该字符内容, 就是? -1

// 14. indexOf()
var str = 'hello world'
console.log('原始字符串 : ', str)
var res = str.indexOf('l')
var res = str.indexOf('l', 5)
console.log('返回值 : ', res)//返回值 :  9
// 15. lastIndexOf()
var str = 'hello world'
console.log('原始字符串 : ', str)
// var res = str.lastIndexOf('l')
var res = str.lastIndexOf('l', 5)
console.log('返回值 : ', res)//返回值 :  3

json 格式字符串 :

+ 我们把所有被引号包裹的内容都叫做字符串
+ 因为字符串填充的内容不一样, 我们做了一些细致分类
? => 全部由数组字符串: 数字字符串
?? ?-> '123456789'
? => 带有 html 格式的字符串: html 格式字符串
?? ?-> '<p>abcd</p>'
? => 查询字符串格式
?? ?-> key=value&key=value
?? ?-> 'name=zhangsan&password=123456&gender=男'
? => json 格式字符串
?? ?-> '{ "name": "Jack", "age": 18 }'
?? ?-> key 和 value 必须使用 双引号 包裹, 纯数字和布尔值可以不用

把 js 的数据类型转换成 json 格式
+ 语法: JSON.stringify(要转换的 js 的数据类型)
+ 返回值: json 格式字符串
把 json 格式转换成 js 的数据类型
+ 语法: JSON.parse(json 格式字符串)
+ 返回值: js 的数据类型
+ 注意:
? => 如果你的小括号内填写的不是一个 json 格式的字符串, 会报错

// 1. js 转换成 json 格式
var obj = { name: 'Jack', age: 18, gender: '男' }
console.log(obj)
var str = JSON.stringify(obj)
console.log(str)// {"name":"Jack","age":18,"gender":"男"}
// 2. json 格式转化昵称 js
var str = '{"name":"Jack","age":18,"gender":"男"}'
console.log(str)
var obj = JSON.parse(str)
console.log(obj)

5. 图例

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-21 15:16:46  更:2021-08-21 15:19:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:04:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码