indexOf 和 lastIndexOf 的使用(大多数人都不知道可以传入2个参数吧🐧)
假设现在有这样一段字符串 “一只大(xiao)蜜蜂(邮箱:xiaomifeng@qq.com)(电话:13799999999)”,现在需要得到字符串 “一只大(xiao)蜜蜂”,也就是把第二个括号或者倒数第二个括号之前的内容取到,应该怎么处理呢?
先来看看具体的代码实现:
//思路(使用lastIndexOf):就是从零位截取到倒数第二个括号的位置,那首先就是要获取倒数第二个括号的位置,第二个位置也就是从倒数第一个括号之前开始再获取倒数第一个括号 var text = "一只大(xiao)蜜蜂(邮箱:xiaomifeng@qq.com)(电话:13799999999)"; var separate = "("; // 1,获取倒数第一个括号的位置 var one = text.lastIndexOf(separate); // 2,获取倒数第二个括号的位置(从倒数第一个括号之前查找) var two = text.lastIndexOf(separate, one - 1); // 3,从第零位开始截取到倒数第二位 var newText = text.substring(0, two); console.log(newText);
//思路(使用indexOf):就是从零位截取到第二个括号的位置,那首先就是要获取第二个括号的位置,第二个位置也就是从第一个括号之后开始再获取第一个括号 var text = "一只大(xiao)蜜蜂(邮箱:xiaomifeng@qq.com)(电话:13799999999)"; var separate = "("; // 1,获取第一个括号的位置 var one = text.indexOf(separate); // 2,获取第二个括号的位置(从第一个括号之后查找) var two = text.indexOf(separate, one + 1); // 3,从第零位开始截取到第二位括号的位置 var newText = text.substring(0, two); console.log(newText);
indexOf:返回字符串中第一次出现的指定值的索引,开始在 fromIndex进行搜索。
语法:
str.indexOf(searchValue[, fromIndex])参数:
searchValue一个字符串,表示被查找的值。
fromIndex表示调用该方法的字符串中开始查找的位置。可以是任意整数。默认值为 0。如果fromIndex < 0则查找整个字符串(如同传进了 0)。如果fromIndex >= str.length,则该方法返回 -1,除非被查找的字符串是一个空字符串,此时返回 str.length。
lastIndexOf:返回字符串中最后出现的指定值的索引,如果没找到则返回 -1。从该字符串的后面向前查找,从
fromIndex处开始。语法:
str.lastIndexOf(searchValue[, fromIndex])参数:
searchValue一个字符串,表示被查找的值。
fromIndex从调用该方法字符串的此位置处开始查找。可以是任意整数。默认值为str.length。如果为负值,则被看作 0。如果fromIndex > str.length,则fromIndex被看作str.length。
fromIndex其实就是指定一个查找范围。
indexOf 的查找范围: fromIndex - 字符串的长度 ;
var text = "canal"; // 不指定位置,则认为是0,这里是指查找 "canal" 中 a 所在的位置 console.log(text.indexOf("a")); // returns 1; // 这里是指查找 "nal" 中 a 所在的位置 console.log(text.indexOf("a", 2)); // returns 3; // 这里是指查找 "canal" 中 a 所在的位置 console.log(text.indexOf("a", 0)); // returns 1; // 值为负数则认为是0,所以这里是指查找 "canal" 中 a 所在的位置 console.log(text.indexOf("a", -1)); // returns 1; // 位置大于字符串长度,如果搜索的字符串不是空字符串则返回-1,空字符串则返回字符串的长度 console.log(text.indexOf("a", 10)); // returns -1; console.log(text.indexOf("", 10)); // returns 5;
lastIndexOf的查找范围:0 - fromIndex;
var text = "canal"; // 不指定位置,则认为是字符串的长度,这里是指查找 "canal" 中 a 所在的位置 console.log(text.lastIndexOf("a")); // returns 3; // 这里是指查找 "can" 中 a 所在的位置 console.log(text.lastIndexOf("a", 2)); // returns 1; // 这里是指查找 "" 中 a 所在的位置 console.log(text.lastIndexOf("a", 0)); // returns -1; // 值为负数则认为是0,所以这里是指查找 "" 中 a 所在的位置 console.log(text.lastIndexOf("a", -1)); // returns -1; // 位置大于字符串长度,则认为是字符串的长度,这里是指查找 "canal" 中 a 所在的位置 console.log(text.lastIndexOf("a", 10)); // returns 3;
参考文档:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/lastIndexOf

浙公网安备 33010602011771号