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

wh7577發表於2021-09-11
在之前的文章《》中,我們介紹了透過獲取子串在字串的第一次或最後一次出現位置的方法。這次我們加大難度,看看如何獲取子串在字串的所有出現位置。

我們在之前的文章中瞭解到使用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結束。因此輸出結果為:

1.png

可以看出,給定字元“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”。

看看輸出結果:

2.png

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

好了,就說到這裡了,有需要的可以看:

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

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2480/viewspace-2827467/,如需轉載,請註明出處,否則將追究法律責任。

相關文章