关于查找子字符串在字符串中所在位置

子字符串在字符串中第一次出现的位置

indexOf()函数

public class Main {
    public static void main(String args[]) {
        String string = "aaa456ac";  
        //查找指定字符是在字符串中的下标。在则返回所在字符串下标;不在则返回-1.  
        System.out.println(string.indexOf("b")); // indexOf(String str); 返回结果:-1,"b"不存在  
 
        // 从第四个字符位置开始往后继续查找,包含当前位置  
        System.out.println(string.indexOf("a",3));//indexOf(String str, int fromIndex); 返回结果:6  
 
        //(与之前的差别:上面的参数是 String 类型,下面的参数是 int 类型)参考数据:a-97,b-98,c-99  
 
        // 从头开始查找是否存在指定的字符  
        System.out.println(string.indexOf(99));//indexOf(int ch);返回结果:7  
        System.out.println(string.indexOf('c'));//indexOf(int ch);返回结果:7  
 
        //从fromIndex查找ch,这个是字符型变量,不是字符串。字符a对应的数字就是97。  
        System.out.println(string.indexOf(97,3));//indexOf(int ch, int fromIndex); 返回结果:6  
        System.out.println(string.indexOf('a',3));//indexOf(int ch, int fromIndex); 返回结果:6  
    }
}

此部分运用菜鸟教程Java indexOf()函数用法
这个方法虽然可以解决一大部分关于子字符串查找的问题,但是如果需要查找子字符串从开始查找第N次出现的位置,这个方法就显得很吃力了。。。。

查找子字符串从开始查找第N次出现的位置

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/** 
* @author 作者 E-mail: WYJ [email protected]
* @version 创建时间:2019年8月27日 上午9:18:06 
*  类说明 
*/
public class 子字符串指定位置 {

	public static void main(String[] args) {
		String str = "aaabaabaaaab";
		String st = "c";
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int a = getFromIndex(str,st,n);
		System.out.println(a+1);
	}
	
	//子字符串modelStr在字符串str中第count次出现时的下标
	private static int getFromIndex(String str, String modelStr, Integer count) {
		//对子字符串进行匹配
	    Matcher slashMatcher = Pattern.compile(modelStr).matcher(str);
		int index = 0;
		int x = 1;
	   	//matcher.find();尝试查找与该模式匹配的输入序列的下一个子序列
		while(slashMatcher.find()) {
		    index++;
		    //当modelStr字符第count次出现的位置
		    if(index == count){
		    	x = 0;
		       break;
		    }
		}
	    //matcher.start();返回以前匹配的初始索引。
		if(x==0)
			return slashMatcher.start();		//如果查找到了就返回所在位置的下标
		else
			return -2;		//如果没有查找到就返回-2,与最终的结果相加就变成-1了
	}

}

该部分借鉴 作者:dream_maker2333
借鉴网址:https://blog.csdn.net/huqingpeng321/article/details/54908694

你可能感兴趣的:(学习总结)