javascript中indexOf()和lastIndexOf()查詢字串位置
avascript從字串中查詢子字串的方法:indexOf()和lastIndexOf()。
它們均是從一個字串中搜索給定的字串,然後返回子字串的位置(如果沒有子字串的位置,則返回-1)。
區別在於:indexOf()方法從字串的開頭向後搜尋字串,而lastIndexOf()方法是從字串的末尾向前搜尋子字串。
alert(stringValue.indexOf("o")); //4
alert(stringValue.lastIndexOf("o")); //7
子字串“o”第一次出現的位置是4,即“hello”中的“o”;最後一次出現的位置是7,即“world”中的“o”。如果“o”在這個字串中只出現了一次,那麼indexOf()和lastIndexOf()會返回相同的位置值。
兩個方法都可以接受可選的第二個引數,表示從字串中的哪個位置開始搜尋。
即,indexOf()會從該引數指定的位置向後搜尋,忽略該位置之前的所有字元;
而lastIndexOf()則會從指定的位置向前搜尋,忽略該位置之後的所有字元。
例子:
alert(stringValue.indexOf("o", 6)); //7
alert(stringValue.lastIndexOf("o", 6)) //4
在將第二個引數6傳遞給這兩個方法之後,得到了與前面例子相反的結果。這一次,由於indexOf()是從位置6(字母“w”)開始向後搜尋,結果在位置7找到了“o”,因此它返回7。而lastIndexOf()是從6開始向前搜尋,結果找到了“hello”中的“o”,因此它返回4。在使用第二個引數的情況下,可以通過迴圈呼叫indexOf()或lastIndexOf()來找到所有匹配的子字串。
例子:
var stringValue = "Lorem ipsum dolor sit amet, consectetur adipisicing elit";
var positions = new Array();
var pos = stringValue.indexOf("e");
while (pos > -1) {
positions.push(pos);
pos = stringValue.indexOf("e", pos + 1);
}
alert(positions); //"3,24,32,35,52"
程式碼說明:
不斷增加indexOf()方法開始查詢的位置,遍歷了一個長字串。
在迴圈之外,首先找到了“e”在字串中的初始位置;
而進入迴圈後,則每次都給indexOf()傳遞上一次的位置加1。
這樣,就確保了每次新搜尋都從上一次找到字串的後面開始。
每次搜尋返回的位置一次被儲存在陣列positions中,以便將來使用。