javascript中indexOf()和lastIndexOf()查找字符串位置

avascript從字符串中查找子字符串的方法:indexOf()和lastIndexOf()。
它們均是從一個字符串中搜索給定的字符串,然後返回子字符串的位置(如果沒有子字符串的位置,則返回-1)。

區別在於:indexOf()方法從字符串的開頭向後搜索字符串,而lastIndexOf()方法是從字符串的末尾向前搜索子字符串。

複製代碼代碼示例:
var stringValue = "hello world";
alert(stringValue.indexOf("o"));  //4
alert(stringValue.lastIndexOf("o"));   //7

子字符串“o”第一次出現的位置是4,即“hello”中的“o”;最後一次出現的位置是7,即“world”中的“o”。如果“o”在這個字符串中只出現了一次,那麼indexOf()和lastIndexOf()會返回相同的位置值。
兩個方法都可以接受可選的第二個參數,表示從字符串中的哪個位置開始搜索。
即,indexOf()會從該參數指定的位置向後搜索,忽略該位置之前的所有字符;
而lastIndexOf()則會從指定的位置向前搜索,忽略該位置之後的所有字符。

例子:
 

複製代碼代碼示例:
var stringValue = "hello world";
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中,以便將來使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章