如何使用indexOf()函数在字符串中查找子字符串
JavaScript 的 indexOf() 函数是用来搜索一个字符串中是否含有子串的方法。其返回值为匹配结果在字符串中的下标,若无匹配则返回 -1。
indexOf() 函数的语法如下:
string.indexOf(substring, start)
其中,string 是要搜索的字符串,substring 是要查找的子串,start 是可选的起始搜索位置,若不指定则从字符串开头开始搜索。
使用 indexOf() 函数可以轻松实现以下功能:
1. 查找一个字符串中是否包含某个子串
2. 查找一个字符串中某个子串的出现位置
3. 查找一个字符串中某个子串的所有出现位置
查找一个字符串中是否包含某个子串
为了判断一个字符串是否包含某个子串,可以使用如下代码:
var str = "Hello, world!";
var subStr = "world";
if (str.indexOf(subStr) !== -1) {
console.log("包含子串");
} else {
console.log("不包含子串");
}
此处使用了 !== 来比较结果,因为 indexOf() 函数可能返回 0,0 类型为数值,如果使用 != 比较则可能会出现误判。
查找一个字符串中某个子串的出现位置
如果要查找一个字符串中某个子串的出现位置,可以如下调用 indexOf() 函数:
var str = "Hello, world!"; var subStr = "world"; console.log(str.indexOf(subStr)); // 7
此处无需判断返回结果是否为 -1,因为如果目标子串不存在,则会返回 -1,不会出现误判。
查找一个字符串中某个子串的所有出现位置
如果要查找一个字符串中某个子串的所有出现位置,可以使用一个循环来多次调用 indexOf() 函数,如下所示:
var str = "Hello, world! This is a beautiful world.";
var subStr = "world";
var positions = new Array();
var pos = str.indexOf(subStr);
while (pos !== -1) {
positions.push(pos);
pos = str.indexOf(subStr, pos + 1);
}
console.log(positions); // [7, 33]
此处使用了一个 while 循环,每次查找到一个子串的位置就存入数组 positions 中,并在下一次调用 indexOf() 函数时指定起始搜索位置为上次匹配位置的下一位。如果循环中的 pos 变量为 -1,则说明已经没有更多的匹配结果,循环结束,此时 positions 数组中存储的就是所有子串出现的位置。
总结
indexOf() 函数是 JavaScript 中非常常用的字符串搜索方法,它可以帮助我们轻松实现字符串搜索的需求,包括查找子串是否存在、查找子串的位置、查找所有子串的位置等。使用时需要注意返回值为数值的情况,以及在查找所有匹配结果时需要使用循环多次调用函数。
