跳到主要内容

JavaScript 字符串的indexOf()方法

字符串的 indexOf() 方法返回子字符串在字符串中第一次出现的索引。

示例

const message = "JavaScript is not Java";

// 返回第一次出现 'va' 的 'v' 的索引
const index = message.indexOf("va");

console.log("index: " + index); // index: 2

indexOf() 语法

indexOf() 方法的语法为:

str.indexOf(searchValue, fromIndex);

这里,str 是一个字符串。

indexOf() 参数

indexOf() 方法接受:

  • searchValue - 在字符串中要搜索的值。如果没有明确提供字符串,则会搜索 "undefined"
  • fromIndex(可选)- 开始搜索的索引。默认为 0。如果 fromIndex < 0,则搜索从索引 0 开始。

indexOf() 返回值

  • 如果值在字符串中至少出现一次,则返回该值的第一个索引。
  • 如果在字符串中找不到该值,则返回 -1

注意: indexOf() 方法区分大小写。

对于空字符串 searchValue 和小于字符串长度的 fromIndex,indexOf 返回与 fromIndex 相同的值。

类似地,对于空字符串 searchValue 和大于字符串长度的 fromIndex,indexOf 返回字符串的长度。

"mashngxue123 JavaScript".indexOf("", 0); // 返回 0
"mashngxue123 JavaScript".indexOf("", 3); // 返回 3

// 此处字符串长度为 20
"mashngxue123 JavaScript".indexOf("", 25); // 返回 23
"mashngxue123 JavaScript".indexOf("", 21); // 返回 23

示例 1:使用 indexOf() 方法

var str = "JavaScript is the world's most misunderstood programming language.";

// indexOf() 返回第一次出现
var index1 = str.indexOf("language");
console.log(index1); // 57

var index2 = str.indexOf("p");
console.log(index2); // 8

// 第二个参数指定搜索的起始索引
var index3 = str.indexOf("p", 9);
console.log(index3); // 45

// 如果没有找到,indexOf 返回 -1
var index4 = str.indexOf("Python");
console.log(index4); // -1

输出

57
8
45
-1

示例 2:查找元素的所有出现

function findAllIndex(string, value) {
indices = [];
var currentIndex = string.indexOf(value);
while (currentIndex != -1) {
indices.push(currentIndex);
currentIndex = string.indexOf(value, currentIndex + value.length);
}
return indices;
}

var str = "JavaScript is as related to Java as Carpenter is to Carpet.";

var occurance1 = findAllIndex(str, "J");
console.log(occurance1); // [ 0, 28 ]

var occurance2 = findAllIndex(str, "Carpet");
console.log(occurance2); // [ 52 ]

var occurance3 = findAllIndex(str, "x");
console.log(occurance3); // []

输出

[ 0, 28 ]
[ 52 ]
[]

推荐阅读: