字符串中查找匹配的子字符串第一次出现的位置及出现的总次数

2020-11-12  本文已影响0人  小圆圈Belen
1.字符串中查找第一次匹配到的子字符串的位置
2.字符串中查找匹配到的子字符串的个数
栗子:
原字符串:youabddsyoubdff
字串:bd

匹配到的位置结果:4
匹配的个数:2
public class MatchSubString {
    public static int subLocation(String src,String subStr){
        char [] srcChars = src.toCharArray();
        char [] subChars = subStr.toCharArray();
        int length_src = srcChars.length;
        int length_subStr = subChars.length;
        int loc = 0;
        //i<length_src-length_subStr作为边界的原因是如果前面没有完全匹配的字串,那么剩余的字符数量小于模版字符串,那就没必要比较了,肯定不存在
        for(int i=0;i<length_src-length_subStr;i++){
            int j=0;
            while (j<length_subStr&&subChars[j]==srcChars[i+j]){
                j=j+1;
            }
            if(j==length_subStr){
                loc = i;
                return loc;
            }
        }
        return  -1;
    }
    public static int subNumber(String src,String subStr){
        char [] srcChars = src.toCharArray();
        char [] subChars = subStr.toCharArray();
        int length_src = srcChars.length;
        int length_subStr = subChars.length;
        int loc = 0;
        int num = 0;
        for(int i=0;i<length_src-length_subStr;i++){
            int j=0;
            while (j<length_subStr&&subChars[j]==srcChars[i+j]){
                j=j+1;
            }
            if(j==length_subStr){
                loc = i;
                num++;
            }
        }
        return num;
    }
    public static void main(String [] args){
        String src = "youabddsyoubdff";
        String subStr = "bd";
        int loc = subLocation(src,subStr);
        int num = subNumber(src,subStr);
        System.out.println("第一次匹配到的子字符串的位置:"+loc);
        System.out.println("匹配到的子字符串的个数:"+num);
    }
}
上一篇下一篇

猜你喜欢

热点阅读