字符串索引

时间:2019-03-28 03:48:35

标签: javascript loops

我需要一个类似IndexOf

的函数
var str = "test*index*ofAnyChar";
  console.log(str.indexOf("*", 5)); // output will be 10

var str = "test*index*ofAnyChar";
  console.log(str.indexOf("*", 0)); // output will be 4

以除内置函数return str.indexOf(indexValue,startFrom)之外的其他方式获取字符串,索引值,开始于和返回值

function Findindex(str, indexValue, startFrom){

      }

我要输出('str*index*of123123E32132s', '*', 0) 成为3

我要输出('str*index*of123123E32132s', '*', 4) 成为9

2 个答案:

答案 0 :(得分:2)

这是解决它的另一种方法。在这种方法中,您仅从所需的索引进行迭代,并在找到匹配项时停止。

注意:我还重命名了该函数,以便遵循命名约定。

function findIndex(str, indexValue, startFrom=0){
  for (let i = startFrom; i < str.length; i++) {
    if (str[i] === indexValue) return i
  }
}

console.log(findIndex('str*index*of123123E32132s', '*', 0))
console.log(findIndex('str*index*of123123E32132s', '*', 4))

如果要处理找不到匹配项的情况,可以选择在for循环后添加return -1语句。

答案 1 :(得分:1)

您当然可以使用循环来遍历字符串。使用for...of循环。

function Findindex(str, indexValue, startFrom){
  let i = 0;
  for(const char of str){
    if(!(i>=startFrom)){
      i++;
      continue;
    }
    if(char==indexValue) return i;
    i++;
  }
}

无循环

String.prototype.indexOf

其语法:

  

str.indexOf(searchValue [,fromIndex])

第二个参数的描述:

  

一个整数,表示开始搜索的索引;默认值为0。对于fromIndex小于0或大于str.length的值,搜索分别从索引0和str.length开始。

如您所见,indexOf具有第二个参数,可让您告诉它从何处搜索。

您可以这样使用它

function Findindex(str, indexValue, startFrom){
   return str.indexOf(indexValue,startFrom);
}