用原生JS实现查找第n次出现的子字符串

来源:互联网 发布:斯提亚在淘宝的正品店 编辑:程序博客网 时间:2024/05/17 04:08

用到的函数为indexOf;
先来简要介绍一下indexOf;,语法

stringObject.indexOf(searchvalue,fromindex)

主要可分为以下两点理解

  1. 是一个字符串对象的方法
  2. 有两个参数

    1. searchvalue为必需的参数,规定你想要查找的子字符串

    2. fromindex为非必需参数,规定你在字符串对象中查找子字符串的
      起始位置,并包含当前位置,若省略则从字符串起始位置开始,即0。

  3. 返回某个指定的子字符串值在字符串中首次出现的位置。

如想要查找helloworld中的’o’字符串,就可以这么写

var str='helloworld';var num=str.indexOf('o');//返回4

那么如果想要查找第二次出现的o的位置呢,这时就需要使用第二个参数
封装如下:

  function find(str,cha,num){    var x=str.indexOf(cha);    for(var i=0;i<num;i++){        x=mystr.indexOf(cha,x+1);    }    return x;    }

三个参数分别为字符串,子字符串以及第几次出现,主要思想就是:把查找的开始位置在前面查找到的子字符串的位置的基础上一步一步向后挪。

调用举例:

var mystr="Hello World!"document.write(find(mystr,'o',2));//返回7

ps:感觉用递归性能会更好,递归还没弄太懂,有童鞋可以写出来的话烦请赐教~

1 0
原创粉丝点击