溫馨提示×

Java indexof與lastIndexOf有何不同

小樊
81
2024-10-09 23:26:38
欄目: 編程語言

Java中的indexOflastIndexOf方法都用于在字符串中查找子字符串的位置,但它們之間存在一些關(guān)鍵差異:

  1. 查找方向indexOf從字符串的開頭開始查找子字符串,而lastIndexOf則從字符串的末尾開始查找子字符串。如果未找到子字符串,indexOf返回-1,而lastIndexOf也返回-1。
  2. 查找次數(shù)indexOf在找到子字符串后,會立即停止查找并返回當(dāng)前位置。而lastIndexOf則會繼續(xù)向后查找,直到找到子字符串或到達(dá)字符串的末尾。因此,lastIndexOf可能會返回子字符串在字符串中出現(xiàn)的所有位置中的最后一個(gè)。
  3. 參數(shù)順序indexOf方法的第一個(gè)參數(shù)是要查找的子字符串,第二個(gè)參數(shù)是可選的,表示從哪個(gè)索引位置開始查找。如果省略第二個(gè)參數(shù),則從字符串的開頭開始查找。而lastIndexOf方法的第一個(gè)參數(shù)是要查找的子字符串,第二個(gè)參數(shù)也是可選的,表示從哪個(gè)索引位置開始查找。如果省略第二個(gè)參數(shù),則從字符串的末尾開始查找。

需要注意的是,如果子字符串為空字符串,indexOf會返回0,而lastIndexOf會返回字符串的長度減1。

以下是一些示例代碼,以幫助您更好地理解這兩個(gè)方法的區(qū)別:

String str = "Hello, world!";

// 使用indexOf查找子字符串"world"
int index1 = str.indexOf("world"); // 輸出7

// 使用lastIndexOf查找子字符串"world"
int index2 = str.lastIndexOf("world"); // 輸出7

// 使用indexOf查找子字符串"WORLD"(不區(qū)分大小寫)
int index3 = str.indexOf("WORLD"); // 輸出-1,因?yàn)樽址胁淮嬖诖髮懙?quot;WORLD"

// 使用lastIndexOf查找子字符串"WORLD"(不區(qū)分大小寫)
int index4 = str.lastIndexOf("WORLD"); // 輸出7,因?yàn)樽址凶詈笠粋€(gè)出現(xiàn)的"WORLD"是大寫的"WORLD"

// 使用indexOf從索引位置5開始查找子字符串"world"
int index5 = str.indexOf("world", 5); // 輸出7,因?yàn)閺乃饕恢?開始查找,第一個(gè)出現(xiàn)的"world"在索引7處

// 使用lastIndexOf從索引位置5開始查找子字符串"world"
int index6 = str.lastIndexOf("world", 5); // 輸出-1,因?yàn)閺乃饕恢?開始向后查找,未找到子字符串"world"

0