1. 程式人生 > >用原生JS實現查詢第n次出現的子字串

用原生JS實現查詢第n次出現的子字串

用到的函式為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:感覺用遞迴效能會更好,遞迴還沒弄太懂,有童鞋可以寫出來的話煩請賜教~