在一个字符串中查找字符或子串是经常使用的操作。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最后一次出现的位置索引。
程序执行结果如下图所示: