indexOf
函数
indexOf
是 JavaScript 中的一个常用字符串方法,用于查找一个子字符串在父字符串中首次出现的位置。该方法返回子字符串在父字符串中第一次出现的位置的索引。如果没有找到子字符串,则返回 -1
。
语法
string.indexOf(searchValue, fromIndex)
参数说明
searchValue
(必需):要搜索的子字符串。可以是一个字符、字符串或正则表达式。fromIndex
(可选):开始搜索的位置,默认为0
。如果指定了fromIndex
,则搜索会从该位置开始(包括该位置),如果fromIndex
为负数,它将被当作字符串长度加上fromIndex
来计算开始搜索的位置。
返回值
- 如果找到了
searchValue
,则返回该子字符串第一次出现的索引(从 0 开始计数)。 - 如果没有找到,则返回
-1
。
示例代码
1. 查找子字符串首次出现的位置
let str = "Hello, world!";
let index = str.indexOf("world");
console.log(index); // 输出 7,因为 "world" 从索引 7 开始
2. 查找字符首次出现的位置
let str = "Hello, world!";
let index = str.indexOf("o");
console.log(index); // 输出 4,因为第一个 "o" 在索引位置 4
3. 从指定位置开始查找
let str = "Hello, world!";
let index = str.indexOf("o", 5);
console.log(index); // 输出 8,因为从索引 5 开始找,第二个 "o" 在索引 8
4. 未找到子字符串时返回 -1
let str = "Hello, world!";
let index = str.indexOf("xyz");
console.log(index); // 输出 -1,因为 "xyz" 不在字符串中
5. 查找多个字符或子字符串
let str = "JavaScript is great!";
let index1 = str.indexOf("Java");
let index2 = str.indexOf("great");
let index3 = str.indexOf("Java", 5); // 从索引 5 开始查找 "Java"
console.log(index1); // 输出 0
console.log(index2); // 输出 14
console.log(index3); // 输出 -1,因为从索引 5 开始没有 "Java"
indexOf
的注意事项
- 大小写敏感:
indexOf
是大小写敏感的,这意味着"hello"
和"Hello"
被认为是不同的字符串。let str = "Hello World!"; let index = str.indexOf("hello"); console.log(index); // 输出 -1,因为 "hello" 与 "Hello" 不匹配
- 返回值从
0
开始:indexOf
返回的是 第一个匹配的索引位置,索引从0
开始。如果找不到,则返回-1
。 - 从指定位置开始查找:
fromIndex
参数允许你指定从字符串的某个索引位置开始搜索。如果这个参数为负数,JavaScript 会将其转换为从字符串末尾开始计算的位置。let str = "abcdef"; let index = str.indexOf("b", -2); console.log(index); // 输出 1,因为从倒数第二个字符开始,"b" 在索引位置 1
- 空字符串和
indexOf
:indexOf
也可以用于查找空字符串。对于任何非空字符串,空字符串的位置总是从索引0
开始(即空字符串在每个位置都可以匹配)。let str = "abc"; let index = str.indexOf(""); console.log(index); // 输出 0,因为空字符串从索引 0 开始
与 lastIndexOf
的区别
indexOf
查找的是 首次出现 的位置。lastIndexOf
查找的是 最后一次出现 的位置。
例如:
let str = "Hello, world!";
console.log(str.indexOf("o")); // 输出 4(第一个 "o")
console.log(str.lastIndexOf("o")); // 输出 8(最后一个 "o")
总结
indexOf
是一个非常常用的方法,用于查找子字符串或字符在字符串中首次出现的位置。- 它是 大小写敏感 的,返回值是子字符串的起始位置索引(从 0 开始),如果没有找到,返回
-1
。 indexOf
还支持从指定位置开始查找(通过fromIndex
参数)。
通过合理使用 indexOf
,你可以轻松处理字符串查找的需求,在许多字符串操作中都有广泛的应用。
发表回复