在一个字符串中寻找另外一个字符串
public class text{
public static void main(String args[]) {
String searchMe="Look for a substring in me";
String subString="sub";
boolean foundIt=false;
int max=searchMe.length()-subString.length();
test:
for(int i=0;i<=max;i++) {
int n=subString.length();
int j=i;
int k=0;
while(n--!=0) {
if(searchMe.charAt(j++)!=subString.charAt(k++)) {
continue test;
}
}
foundIt=true;
break test;
}
System.out.println(foundIt?"Found it":"Didn't find it");
}
}
该段程序有点难以理解,主要就是If语句的理解,
if(searchMe.charAt(j++)!=subString.charAt(k++))
意思是,从被找的开始找到与sub 每一个字母都相似的结构,直到出现一个不一样的话,就会重新回到被找的字母遍历当中。
例如,在123subsubing中寻找subing,外层循环在按照123subsubing的循序往后推算,123直接pass,然后来到sub,在while中循环三次后,第四个字母对不上,又重新从u开始匹配。