【JavaScript 教程】第五章 字符串07— indexOf():获取字符串中子字符串第一次出现的索引_javascript

英文 | https://www.javascripttutorial.net/

译文 | 杨小爱


在上节,我们学习了如何使用 JavaScript split() 方法将字符串拆分为子字符串数组,错过小伙伴可以点击文章《​​【JavaScript 教程】第五章 字符串06— split():将字符串拆分为子字符串数组​​ 》进行学习。

那么,在今天的教程中,我们将一起来学习如何使用 JavaScript 的indexOf()方法来查找字符串中子字符串的索引。

String.prototype.indexOf() 返回字符串 (str) 中第一次出现子字符串 (substr) 的索引:

let index = str.indexOf(substr, [, fromIndex]);

如果 str 不包含 substr,则返回 -1。

fromIndex 是一个可选参数,用于指定搜索开始的索引。它默认为零 (0),这意味着如果您省略 fromIndex,搜索将从字符串的开头开始。

indexOf() 始终执行区分大小写的搜索。

要查找字符串中子字符串最后一次出现的索引,请使用 lastIndexOf() 方法。

JavaScript String indexOf() 示例

让我们举一些使用 indexOf() 方法的例子。

1) 使用 indexOf() 方法示例

以下示例使用 indexOf() 获取字符串 'finding substring in string' 中第一次出现子字符串 'str' 的索引:

let str = 'finding substring in string';
let index = str.indexOf('str');


console.log(index); // 11

2) 使用 indexOf() 计算字符串中子字符串的出现次数

下面的示例使用 indexOf() 方法计算字符串 'You don't know what you don't know until you know.' 中子字符串 'know' 的出现次数:

let str = 'You do not know what you do not know until you know.';
let substr = 'know';


let count = 0;


let index = str.indexOf(substr);
while(index !== -1) {
count++;
index = str.indexOf(substr, index + 1);
}


console.log(count);

程序是怎么运行的:

首先,使用 indexOf() 方法查找 str 中第一次出现的 substr。

然后,使用while循环,从最后找到的位置+1开始,在str中重复查找substr的下一个位置。

3) indexOf() 和区分大小写

indexOf() 区分大小写。请参阅以下示例:

let str = 'JS indexOf';
let substr = 'js';


let index = str.indexOf(substr);


console.log(index); // -1

在这个例子中, indexOf() 返回 -1,因为字符串 JS IndexOf 不包含子字符串 js 而是 JS。

要对字符串中子字符串的索引执行不区分大小写的搜索,您可以在使用 indexOf() 方法之前将子字符串和字符串都转换为小写,如下所示:

let str = 'JS indexOf';
let substr = 'js';


let index = str.toLocaleLowerCase().indexOf(substr.toLocaleLowerCase());


console.log(index); // 0

总结

  • indexOf() 返回字符串中子字符串第一次出现的索引,如果字符串不包含子字符串,则返回 -1。
  • indexOf() 区分大小写。






【JavaScript 教程】第五章 字符串07— indexOf():获取字符串中子字符串第一次出现的索引_字符串_02

【JavaScript 教程】第五章 字符串07— indexOf():获取字符串中子字符串第一次出现的索引_javascript_03