字符串中查找匹配的子字符串第一次出现的位置及出现的总次数
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);
}
}