首頁  >  文章  >  web前端  >  JS字串學習之計算給定字元的全部出現位置

JS字串學習之計算給定字元的全部出現位置

青灯夜游
青灯夜游原創
2021-08-16 17:06:282619瀏覽

在先前的文章《js怎麼知道給定子字串是不是存在》中,我們介紹了透過取得子字串在字串的第一次或最後一次出現位置的方法。這次我們加大難度,看看如何取得子字串在字串的所有出現位置。

我們在先前的文章中了解到使用indexOf()和lastIndexOf()函數可以取得子字串在第一次出現位置和最後一次出現位置;如果沒有找到該子字串,則傳回-1 。

而這兩個函數都可接收可選的第二個參數start,值只能是一個整數,表示從字串中的哪個位置開始搜索,取值範圍是0 ~ length-1。 lastIndexOf()如果指定了start參數,則在一個字串中的指定位置從後向前搜尋。

利用這個可選的第二個參數start和迴圈語句,我們就可以計算給定子字串(包含一個或多個字元)的全部出現位置。

首先看看使用indexOf()是怎麼統計給定字元在字串的所有出現位置

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);  //从给定字符出现位置的后一位开始查找
}

console.log(positions);//"3,24,32,35,52"

分析:先使用indexOf("e")取得第一次出現位置並賦值給變數pos;然後使用while語句透過循環呼叫indexOf(),不斷將查找起始位置設為“pos 1”,從給定字元出現位置pos的後一位開始查找,取得下一個出現位置;直到查找不到,回到-1結束。因此輸出結果為:

JS字串學習之計算給定字元的全部出現位置

可以看出,給定字元「e」在字串stringValue中一個出現了5次,因為字串位置起始於0,而不是1,所以出現位置分別為3、24、32、35、52。

然後我們來看看使用lastIndexOf()是怎麼統計給定字元在字串的所有出現位置

var stringValue = "Lorem ipsum dolor sit amet, consectetur adipisicing elit";
var positions = new Array();
var pos = stringValue.lastIndexOf("e");

while(pos > -1){
	positions.push(pos);
	pos = stringValue.lastIndexOf("e",pos - 1);
}
console.log(positions);//"3,24,32,35,52"

分析:使用lastIndexOf()取得所有出現位置其實並使用indexOf( )差不多,只不過因為lastIndexOf()回傳的是最後一次的出現位置,所以,每次循環,我們都要將查找的起始位置設為「pos - 1」。

看看輸出結果:

JS字串學習之計算給定字元的全部出現位置

可以看出,取得到的給定字元「e」在字串stringValue中所有出現位置是倒序的,順序分別為:52、35、32、24、3。

好了,就說到這裡了,有需要的可以看:javascript高階教學

#

以上是JS字串學習之計算給定字元的全部出現位置的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn