Logo

郎哥编程

字符串查找

2019-12-10 1004

在一个字符串中查找字符或子串是经常使用的操作。String类提供了两种查找字符串的方法,分别是indexOf()和lastIndexOf(),这两种方法都返回待查找字符或子串在字符串的起始索引位置。

int  indexOf(String s)

该方法用于在字符串中查找与s字符串匹配的子串,若发现匹配的子串,则返回子串的起始位置索引,如果没有找到与s匹配的子串,返回-1。

调用语法如下:

str.indexOf(s)

其中,str是已创建的字符串对象,s待查找的字符串。

案例1:创建一个字符串对象,使用indexOf()方法查找子串,如查找到子串输出子串内容,否则输出查找子串失败信息。

在PbaseUnit11项目unit包下创建StringSearchSample类。代码如下:

/** 
* @Title: StringSearchSample.java 
* @Package unit 
* @Description: Java基础知识课程案例
* @author 编程训练营 
* @date  
* @version V1.0 
*/ 
 
package unit;
 
/** 
* @ClassName: StringSearchSample 
* @Description: 字符串(字符串查找)案例1   
* @author 编程训练营 
* @date  
* 
*/
 
public class StringSearchSample {
 
    /** 
    * @Title: main 
    * @Description: Java程序入口main方法 
    * @param @param args    参数 
   
    * @return void    返回类型 
    * @throws 
    */
 
    public static void main(String[] args) {
       // 创建String对象
       String szTemp = "小明正在学习Java编程";
       String szSearch = "编程";
       // 使用indexOf查找子串"编程"
       int nIndex = 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方法截取子串。

程序执行结果如下图所示:

image.png                     

int  lastIndexOf(String s)

该方法在当前字符串中查找子串s,若s多次出现在当前字符串中,该方法会返回s在当前字符串最后一次出现的索引位置。如果没有找到s,则返回-1。

例如:

在字符串“小明正在学习Java编程,Java编程是他很喜欢的课程”中,查找子串“Java”,lastIndexOf()方法会返回最后出现“Java”的索引位置,即返回索引13。

案例2:创建一个字符串对象,使用lastIndexOf()方法查找子串,如查找到子串输出子串内容,否则输出查找子串失败信息。

在PbaseUnit11项目unit包下创建StringSearchSample2类。代码如下:

/** 
* @Title: StringSearchSample2.java 
* @Package unit 
* @Description:Java基础知识课程案例  
* @author 编程训练营 
* @date 
* @version V1.0 
*/ 
 
package unit;
 
/** 
* @ClassName: StringSearchSample2 
* @Description: 字符串(字符串查找)案例2
* @author 编程训练营 
* @date  
* 
*/
 
public class StringSearchSample2 {
 
    /** 
    * @Title: main 
    * @Description: Java程序入口main方法
    * @param @param args    参数 
   
    * @return void    返回类型 
    * @throws 
    */
 
    public static void main(String[] args) {
       // 创建String对象
       String szTemp = "小明正在学习Java编程,Java编程是他很喜欢的课程";
       String szSearch = "Java";
       // 使用lastIndexOf查找子串"编程"
       int nIndex = 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最后一次出现的位置索引。

程序执行结果如下图所示:

image.png

代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论