js -- 字符串相关方法总结

简介: js -- 字符串相关方法总结

在js中,string 字符串对象被进行了基本类型的包装就是把简单数据类型包装成为复杂数据类型,这样基本数据类型就有了属性和方法

例如:

// 下面代码有什么问题?它是怎么返回 4 的?
let str = 'asdf';
console.log(str.length); // 4

按道理基本数据类型是没有属性和方法的,而对象才有属性和方法,但上面代码却可以执行,

这是因为 js 会把基本数据类型包装为复杂数据类型,其执行过程如下:

// 1. 生成临时变量,把简单类型包装为复杂数据类型
let moment = new String('asdf');
console.log(moment);
// 2. 赋值给我们声明的字符变量
str = moment;
// 3. 销毁临时变量
moment = null;

由此可以得出字符串的每次操作都会重新开辟一块新空间,严格来说字符串是不可变的。

所以本文总结了字符串相关的方法

根据字符串返回位置

方法名 说明

indexOf(‘要查找的字符,开始的位置)

返回指定内容在原字符串中的位置,如果找不到就返回-1,开始的位置是index索引号。

lastIndexOf()

从后往前找,只找第一个匹配的
let str = "abcdefgabc";
console.log(str.indexOf("d")); // 3
// 指定从索引号为 4 的地方开始查找字符"d"
console.log(str.indexOf("d", 4)); // -1
// 从后往前找第一个"a"
console.log(str.lastIndexOf("a")); // 7

根据位置返回字符

方法名 说明 使用

charAt(index)

返回指定位置的字符(index 指字符串索引) str.charAt(0)
charCodeAt(index) 获取指定位置字符的ASCLL码 str.charCodeAt(0)
str[index] 获取指定位置的字符 HTML、IE 8+ 支持
// 1. charAt(index) 根据位置返回字符
let str = 'asdf';
console.log(str.charAt(3)); // f
// 遍历所有的字符
for (let i = 0; i < str.length; i++) {
console.log(str.charAt(i)); // a s d f
}
// 2. charCodeAt(index)
// 返回相应索引号的字符 ASCII 值,目的: 判断用户按下了那个键
console.log(str.charCodeAt(0)); // 97
// 3. str[index] H5 新增的
console.log(str[0]); // a

字符串操作方法

方法名 说明
substr(start,length) 从start开始,取length个字符,不会改变原字符串
slice(start,end) 从start开始,截取到end位置,不包括end,(获取索引
substring(start,end)

从 start 位置开始,截取到 end 位置,不包括end 和 slice 基本相同

// 从下标 2 开始 取 3 个字符
let str1 = 'abcdefg';
let str2 = str1.substr(2,3);
console.log(str2); // cde
// 从下标 1 开始,截取到下标 3 之前
let str3 = 'abcdefg';
let str4 = str3.slice(1,3);
console.log(str4); // bc
let str5 = 'abcdefg';
let str6 = str5.substring(1,3);
console.log(str6); // bc

replace()方法

replace() 方法用于在字符串中用一些字符替换另一些字符,其使用格式如下:

// 字符串.replace(被替换的字符串, 要替换为的字符串);
let str1 = 'abcdefg';
let str2 = str1.replace('abc','123');
console.log(str2); // 123defg

split()方法

split()方法用于切割字符串,它可以将字符串切分为数组。在切分完毕之后,返回的是一个

数组。其使用格式如下:

// 字符串.split("分割字符")
let str1 = 'abcdefg';
let str2 = str1.split();
console.log(str2); // ['abcdefg']
let str3 = str1.split('');
console.log(str3); // ['a', 'b', 'c', 'd', 'e', 'f', 'g']
let str4 = '123,456,789';
let str5 = str4.split(',');
console.log(str5); // ['123', '456', '789']

希望对大家有所帮助   ˃̶͈ ˂̶͈

目录
相关文章
|
1月前
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
|
1月前
|
Web App开发 JavaScript 前端开发
如何确保 Math 对象的方法在不同的 JavaScript 环境中具有一致的精度?
【10月更文挑战第29天】通过遵循标准和最佳实践、采用固定精度计算、进行全面的测试与验证、避免隐式类型转换以及持续关注和更新等方法,可以在很大程度上确保Math对象的方法在不同的JavaScript环境中具有一致的精度,从而提高代码的可靠性和可移植性。
|
2月前
|
缓存 监控 前端开发
JavaScript 实现大文件上传的方法
【10月更文挑战第17天】通过以上步骤和方法,我们可以实现较为可靠和高效的大文件上传功能。当然,具体的实现方式还需要根据实际的应用场景和服务器要求进行调整和优化。
|
1月前
|
监控 JavaScript Java
Node.js中内存泄漏的检测方法
检测内存泄漏需要综合运用多种方法,并结合实际的应用场景和代码特点进行分析。及时发现和解决内存泄漏问题,可以提高应用的稳定性和性能,避免潜在的风险和故障。同时,不断学习和掌握内存管理的知识,也是有效预防内存泄漏的重要途径。
135 52
|
1月前
|
JavaScript 前端开发 索引
js中DOM的基础方法
【10月更文挑战第31天】这些DOM基础方法是操作网页文档结构和实现交互效果的重要工具,通过它们可以动态地改变页面的内容、样式和行为,为用户提供丰富的交互体验。
|
1月前
|
缓存 JavaScript UED
js中BOM中的方法
【10月更文挑战第31天】
|
1月前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
49 5
|
1月前
|
JavaScript 前端开发 数据处理
模板字符串和普通字符串在浏览器和 Node.js 中的性能表现是否一致?
综上所述,模板字符串和普通字符串在浏览器和 Node.js 中的性能表现既有相似之处,也有不同之处。在实际应用中,需要根据具体的场景和性能需求来选择使用哪种字符串处理方式,以达到最佳的性能和开发效率。
|
1月前
|
JavaScript 前端开发 索引
JavaScript学习第二章--字符串
本文介绍了JavaScript中的字符串处理,包括普通字符串和模板字符串的使用方法及常见字符串操作方法如`charAt`、`concat`、`endsWith`等,适合前端学习者参考。作者是一位热爱前端技术的大一学生,专注于分享实用的编程技巧。
30 2
|
1月前
|
JavaScript 前端开发
js中的bind,call,apply方法的区别以及用法
JavaScript中,`bind`、`call`和`apply`均可改变函数的`this`指向并传递参数。其中,`bind`返回一个新函数,不立即执行;`call`和`apply`则立即执行,且`apply`的参数以数组形式传递。三者在改变`this`指向及传参上功能相似,但在执行时机和参数传递方式上有所区别。
28 1