String.prototype.indexOf()
String
值的 indexOf()
方法搜索此字符串并返回指定子字符串第一次出现的索引。它采用可选的起始位置,并返回索引大于或等于指定数字的指定子字符串的第一次出现。
¥The indexOf()
method of String
values searches this string and returns the index of the first occurrence of the specified substring. It takes an optional starting position and returns the first occurrence of the specified substring at an index greater than or equal to the specified number.
Try it
语法
参数
¥Parameters
searchString
-
要搜索的子字符串。所有值都是 强制为字符串,因此省略它或传递
undefined
会导致indexOf()
搜索字符串"undefined"
,这很少是你想要的。 position
Optional-
该方法返回指定子字符串在大于或等于
position
的位置第一次出现的索引,默认为0
。如果position
大于调用字符串的长度,则该方法根本不搜索调用字符串。如果position
小于零,则该方法的行为与position
为0
时的情况相同。'hello world hello'.indexOf('o', -5)
返回4
— 因为它导致该方法的行为就好像第二个参数是0
,并且o
在大于或等于0
的位置处第一次出现是在位置4
处。'hello world hello'.indexOf('world', 12)
返回-1
— 因为,虽然子字符串world
确实出现在索引6
处,但该位置不大于或等于12
。'hello world hello'.indexOf('o', 99)
返回-1
— 因为99
大于hello world hello
的长度,这导致该方法根本不搜索字符串。
返回值
¥Return value
找到的 searchString
第一次出现的索引,如果未找到则为 -1
。
¥The index of the first occurrence of searchString
found, or -1
if not found.
使用空搜索字符串时返回值
¥Return value when using an empty search string
搜索空搜索字符串会产生奇怪的结果。如果没有第二个参数,或者第二个参数的值小于调用字符串的长度,则返回值与第二个参数的值相同:
¥Searching for an empty search string produces strange results. With no second argument, or with a second argument whose value is less than the calling string's length, the return value is the same as the value of the second argument:
"hello world".indexOf(""); // returns 0
"hello world".indexOf("", 0); // returns 0
"hello world".indexOf("", 3); // returns 3
"hello world".indexOf("", 8); // returns 8
但是,如果第二个参数的值大于或等于字符串的长度,则返回值是字符串的长度:
¥However, with a second argument whose value is greater than or equal to the string's length, the return value is the string's length:
"hello world".indexOf("", 11); // returns 11
"hello world".indexOf("", 13); // returns 11
"hello world".indexOf("", 22); // returns 11
在前一个实例中,该方法的行为就好像它在第二个参数中指定的位置后面发现了一个空字符串。在后一种情况下,该方法的行为就好像在调用字符串的末尾发现了一个空字符串。
¥In the former instance, the method behaves as if it found an empty string just after the position specified in the second argument. In the latter instance, the method behaves as if it found an empty string at the end of the calling string.
描述
¥Description
字符串是零索引的:字符串第一个字符的索引是 0
,字符串最后一个字符的索引是字符串长度减 1。
¥Strings are zero-indexed: The index of a string's first character is 0
, and the index of a string's last character is the length of the string minus 1.
"Blue Whale".indexOf("Blue"); // returns 0
"Blue Whale".indexOf("Blute"); // returns -1
"Blue Whale".indexOf("Whale", 0); // returns 5
"Blue Whale".indexOf("Whale", 5); // returns 5
"Blue Whale".indexOf("Whale", 7); // returns -1
"Blue Whale".indexOf(""); // returns 0
"Blue Whale".indexOf("", 9); // returns 9
"Blue Whale".indexOf("", 10); // returns 10
"Blue Whale".indexOf("", 11); // returns 10
indexOf()
方法区分大小写。例如,以下表达式返回 -1
:
¥The indexOf()
method is case sensitive. For example, the following
expression returns -1
:
"Blue Whale".indexOf("blue"); // returns -1
检查发生情况
¥Checking occurrences
检查字符串中是否出现特定子字符串时,正确的检查方法是测试返回值是否为 -1
:
¥When checking if a specific substring occurs within a string, the correct way to check is test whether the return value is -1
:
"Blue Whale".indexOf("Blue") !== -1; // true; found 'Blue' in 'Blue Whale'
"Blue Whale".indexOf("Bloe") !== -1; // false; no 'Bloe' in 'Blue Whale'
示例
使用 indexOf()
indexOf() 和区分大小写
¥indexOf() and case-sensitivity
以下示例定义了两个字符串变量。
¥The following example defines two string variables.
这些变量包含相同的字符串,但第二个字符串包含大写字母。第一个 console.log()
方法显示 19
。但由于 indexOf()
方法区分大小写,因此在 myCapString
中找不到字符串 "cheddar"
,因此第二个 console.log()
方法显示 -1
。
¥The variables contain the same string, except that the second string contains uppercase
letters. The first console.log()
method displays 19
. But
because the indexOf()
method is case sensitive, the string
"cheddar"
is not found in myCapString
, so the second
console.log()
method displays -1
.
const myString = "brie, pepper jack, cheddar";
const myCapString = "Brie, Pepper Jack, Cheddar";
console.log(myString.indexOf("cheddar")); // 19
console.log(myCapString.indexOf("cheddar")); // -1
使用 indexOf()计算字符串中字母的出现次数
¥Using indexOf() to count occurrences of a letter in a string
以下示例将 count
设置为字符串 str
中字母 e
的出现次数:
¥The following example sets count
to the number of occurrences of the
letter e
in the string str
:
const str = "To be, or not to be, that is the question.";
let count = 0;
let position = str.indexOf("e");
while (position !== -1) {
count++;
position = str.indexOf("e", position + 1);
}
console.log(count); // 4
规范
Specification |
---|
ECMAScript Language Specification # sec-string.prototype.indexof |
浏览器兼容性
BCD tables only load in the browser