在一個字符串中查找字符或子串是經常使用的操作。String類提供了兩種查找字符串的方法,分別是indexOf()和lastIndexOf(),這兩種方法都返回待查找字符或子串在字符串的起始索引位置。
int indexOf(String s)
該方法用於在字符串中查找與s字符串匹配的子串,若發現匹配的子串,則返回子串的起始位置索引,如果沒有找到與s匹配的子串,返回-1。
調用語法如下:
str.indexOf(s)
其中,str是已創建的字符串對象,s待查找的字符串。
案例1:創建一個字符串對象,使用indexOf()方法查找子串,如查找到子串輸出子串內容,否則輸出查找子串失敗信息。
在PbaseUnit11項目unit包下創建StringSearchSample類。代碼如下:
/**
* @Title: StringSearchSample.java
* @Packageunit
* @Description: Java基礎知識課程案例
* @author編程訓練營
* @date
* @versionV1.0
*/
packageunit;
/**
* @ClassName: StringSearchSample
* @Description: 字符串(字符串查找)案例1
* @author編程訓練營
* @date
*
*/
publicclassStringSearchSample {
/**
* @Title: main
* @Description: Java程序入口main方法
* @param@param args 參數
* @return void 返回類型
* @throws
*/
publicstaticvoidmain(String[] args) {
// 創建String對象
String szTemp = "小明正在學習Java編程";
String szSearch = "編程";
// 使用indexOf查找子串"編程"
intnIndex = szTemp.indexOf(szSearch);
// 若nIndex不等於-1,說明已查找到子串
if( nIndex != -1 )
{
// 從szTemp截取已查找到的子串
String szSub = szTemp.substring(nIndex,nIndex+szSearch.length());
// 輸出子串
System.out.println(szSub);
}
else
{
System.out.printf("沒有查找到子串:%s",szSearch);
}
}
}
程序結構分析
代碼創建了兩個String對象,一個String對象是szTemp,字符串查找操作在該字符串對象進行,一個String對象是szSearch,該字符串是待查找字符串。
使用String類的indexOf()方法在szTemp中查找szSearch,若szTemp內容包含szSearch,則查找成功。indexOf()方法返回szSearch在szTemp中的起始索引,然後使用String類的substring方法截取子串。
程序執行結果如下圖所示:
int lastIndexOf(String s)
該方法在當前字符串中查找子串s,若s多次出現在當前字符串中,該方法會返回s在當前字符串最後一次出現的索引位置。如果沒有找到s,則返回-1。
例如:
在字符串「小明正在學習Java編程,Java編程是他很喜歡的課程」中,查找子串「Java」,lastIndexOf()方法會返回最後出現「Java」的索引位置,即返回索引13。
案例2:創建一個字符串對象,使用lastIndexOf()方法查找子串,如查找到子串輸出子串內容,否則輸出查找子串失敗信息。
在PbaseUnit11項目unit包下創建StringSearchSample2類。代碼如下:
/**
* @Title: StringSearchSample2.java
* @Packageunit
* @Description:Java基礎知識課程案例
* @author編程訓練營
* @date
* @versionV1.0
*/
packageunit;
/**
* @ClassName: StringSearchSample2
* @Description: 字符串(字符串查找)案例2
* @author編程訓練營
* @date
*
*/
publicclassStringSearchSample2 {
/**
* @Title: main
* @Description: Java程序入口main方法
* @param@param args 參數
* @return void 返回類型
* @throws
*/
publicstaticvoidmain(String[] args) {
// 創建String對象
String szTemp = "小明正在學習Java編程,Java編程是他很喜歡的課程";
String szSearch = "Java";
// 使用lastIndexOf查找子串"編程"
intnIndex = szTemp.lastIndexOf(szSearch);
// 若nIndex不等於-1,說明已查找到子串
if( nIndex != -1 )
{
// 輸出子串的索引位置
System.out.println("查找子串索引位置為:" + nIndex);
// 從szTemp截取已查找到的子串
String szSub = szTemp.substring(nIndex,nIndex+szSearch.length());
// 輸出子串
System.out.println(szSub);
}
else
{
System.out.printf("沒有查找到子串:%s",szSearch);
}
}
}
程序結構分析
代碼使用lastIndexOf()方法查找子串szSearch,szSearch在szTemp出現兩次,lastIndexOf()方法會返回szSearch最後一次出現的位置索引。
程序執行結果如下圖所示: