通過循環調用indexOf()或lastIndexOf()來找到所有匹配的子字符串。 上面兩個方法都是從一個字符串中搜索給定的子字符串,然后返回子字符串的位置(如果沒有找到子字符串,則返回-1)。這兩個方法的區別在于:indexOf()方法從字符串的開頭向后搜索子字符串,而lastIndexOf()方法是從字符串的末尾向前搜索子字符串。 這兩個方法都可以接收可選的第二個參數,表示從字符串中的那個位置開始搜索。換句話說,indexOf()會從該參數指定的位置向后搜索,忽略該位置之前的所有字符;lastIndexOf()類似。
/* * 查找一個字符串中的所有子串的位置 */var str = "I think of other ages that floated upon the stream of life and love and death";var positions = new Array();function searchSubStr(str,subStr){ var pos = str.indexOf(subStr); while(pos>-1){ positions.push(pos); pos = str.indexOf(subStr,pos+1); }}searchSubStr(str,"o");alert(positions);//8,11,29,37,51,64這個例子通過不斷增加indexOf()方法開始查找的位置,遍歷了一個長字符串。在循環之外,首先找到了”o”在字符串中的初始位置;而進入循環后,則每次都給indexOf()傳遞上一次的位置加1。這樣就確保了每次新搜索都從上一次找到的子字符串的后面開始。每次搜索返回的位置被保存在數組positions中,以便將來使用。
新聞熱點
疑難解答