在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']
希望对大家有所帮助 ˃̶͈ ˂̶͈