今天再来看一些JavaScript基础知识,基础太重要了。还清楚的记得,今年春招的时候,某大厂面试官狠狠的嘲讽我 JavaScript 的API都记不住🤣太尴尬了,主要还是用的太少了,所以平时还是要多用多积累。今天我们就来看看JavaScript中有哪些常用的字符串方法!文章内容较多,建议先收藏再学习!
1. 获取字符串长度
JavaScript中的字符串有一个length属性,该属性可以用来获取字符串的长度:
const str = 'hello'; str.length // 输出结果:5 复制代码
2. 获取字符串指定位置的值
charAt()和charCodeAt()方法都可以通过索引来获取指定位置的值:
- charAt() 方法获取到的是指定位置的字符;
- charCodeAt()方法获取的是指定位置字符的Unicode值。
(1)charAt()
charAt() 方法可以返回指定位置的字符。其语法如下:
string.charAt(index) 复制代码
index表示字符在字符串中的索引值:
const str = 'hello'; str.charAt(1) // 输出结果:e 复制代码
我们知道,字符串也可以通过索引值来直接获取对应字符,那它和charAt()有什么区别呢?来看例子:
const str = 'hello'; str.charAt(1) // 输出结果:e str[1] // 输出结果:e str.charAt(5) // 输出结果:'' str[5] // 输出结果:undefined 复制代码
可以看到,当index的取值不在str的长度范围内时,str[index]会返回undefined,而charAt(index)会返回空字符串;除此之外,str[index]不兼容ie6-ie8,charAt(index)可以兼容。
(2)charCodeAt()
charCodeAt()
:该方法会返回指定索引位置字符的 Unicode 值,返回值是 0 - 65535 之间的整数,表示给定索引处的 UTF-16 代码单元,如果指定位置没有字符,将返回 NaN:
let str = "abcdefg"; console.log(str.charCodeAt(1)); // "b" --> 98 复制代码
通过这个方法,可以获取字符串中指定Unicode编码值范围的字符。比如,数字0~9的Unicode编码范围是: 48~57,可以通过这个方法来筛选字符串中的数字,当然如果你更熟悉正则表达式,会更方便。
3. 检索字符串是否包含特定序列
这5个方法都可以用来检索一个字符串中是否包含特定的序列。其中前两个方法得到的指定元素的索引值,并且只会返回第一次匹配到的值的位置。后三个方法返回的是布尔值,表示是否匹配到指定的值。
注意:这5个方法都对大小写敏感!
(1)indexOf()
indexOf()
:查找某个字符,有则返回第一次匹配到的位置,否则返回-1,其语法如下:
string.indexOf(searchvalue,fromindex) 复制代码
该方法有两个参数:
- searchvalue:必需,规定需检索的字符串值;
- fromindex:可选的整数参数,规定在字符串中开始检索的位置。它的合法取值是 0 到 string.length - 1。如省略该,则从字符串的首字符开始检索。
let str = "abcdefgabc"; console.log(str.indexOf("a")); // 输出结果:0 console.log(str.indexOf("z")); // 输出结果:-1 console.log(str.indexOf("c", 4)) // 输出结果:9 复制代码
(2)lastIndexOf()
lastIndexOf()
:查找某个字符,有则返回最后一次匹配到的位置,否则返回-1
let str = "abcabc"; console.log(str.lastIndexOf("a")); // 输出结果:3 console.log(str.lastIndexOf("z")); // 输出结果:-1 复制代码
该方法和indexOf()类似,只是查找的顺序不一样,indexOf()是正序查找,lastIndexOf()是逆序查找。
(3)includes()
includes()
:该方法用于判断字符串是否包含指定的子字符串。如果找到匹配的字符串则返回 true,否则返回 false。该方法的语法如下:
string.includes(searchvalue, start) 复制代码
该方法有两个参数:
- searchvalue:必需,要查找的字符串;
- start:可选,设置从那个位置开始查找,默认为 0。
let str = 'Hello world!'; str.includes('o') // 输出结果:true str.includes('z') // 输出结果:false str.includes('e', 2) // 输出结果:false 复制代码
(4)startsWith()
startsWith()
:该方法用于检测字符串是否以指定的子字符串开始。如果是以指定的子字符串开头返回 true,否则 false。其语法和上面的includes()方法一样。
let str = 'Hello world!'; str.startsWith('Hello') // 输出结果:true str.startsWith('Helle') // 输出结果:false str.startsWith('wo', 6) // 输出结果:true 复制代码
(5)endsWith()
endsWith()
:该方法用来判断当前字符串是否是以指定的子字符串结尾。如果传入的子字符串在搜索字符串的末尾则返回 true,否则将返回 false。其语法如下:
string.endsWith(searchvalue, length) 复制代码
该方法有两个参数:
- searchvalue:必需,要搜索的子字符串;
- length: 设置字符串的长度,默认值为原始字符串长度 string.length。
let str = 'Hello world!'; str.endsWith('!') // 输出结果:true str.endsWith('llo') // 输出结果:false str.endsWith('llo', 5) // 输出结果:true 复制代码
可以看到,当第二个参数设置为5时,就会从字符串的前5个字符中进行检索,所以会返回true。
4. 连接多个字符串
concat() 方法用于连接两个或多个字符串。该方法不会改变原有字符串,会返回连接两个或多个字符串的新字符串。其语法如下:
string.concat(string1, string2, ..., stringX) 复制代码
其中参数 string1, string2, ..., stringX 是必须的,他们将被连接为一个字符串的一个或多个字符串对象。
let str = "abc"; console.log(str.concat("efg")); //输出结果:"abcefg" console.log(str.concat("efg","hijk")); //输出结果:"abcefghijk" 复制代码
虽然concat()方法是专门用来拼接字符串的,但是在开发中使用最多的还是加操作符+,因为其更加简单。
5. 字符串分割成数组
split() 方法用于把一个字符串分割成字符串数组。该方法不会改变原始字符串。其语法如下:
string.split(separator,limit) 复制代码
该方法有两个参数:
- separator:必需。字符串或正则表达式,从该参数指定的地方分割 string。
- limit:可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
let str = "abcdef"; str.split("c"); // 输出结果:["ab", "def"] str.split("", 4) // 输出结果:['a', 'b', 'c', 'd'] 复制代码
如果把空字符串用作 separator,那么字符串中的每个字符之间都会被分割。
str.split(""); // 输出结果:["a", "b", "c", "d", "e", "f"] 复制代码
其实在将字符串分割成数组时,可以同时拆分多个分割符,使用正则表达式即可实现:
const list = "apples,bananas;cherries" const fruits = list.split(/[,;]/) console.log(fruits); // 输出结果:["apples", "bananas", "cherries"] 复制代码