在做拼音搜索的时候,发现了一个问题,现有的contains或者indexOfAt都是判断是否包含连续的字符串,但我的需求是包含不连续的字符串,所以我做了一下的一个接军方法,希望能帮助到大家。
代码如下
其中p例如abcdef name例如adf
//查看是否包含所查询的字符串
boolean res=false;
//如过只有一个字符
if(name.length()<2){
//包含
res=p.contains(name);
}else{
//当不是一个字符的时候,循环获取每个字符
for(int j=0;j<name.length();j++){
char a=name.charAt(j);
int res1=p.indexOf(a);
//判断是否包含
if(res1==-1){
//不包含
res=false;
//跳出此次循环
break;
}else{
//包含的话
//解决重复搜索问题,当搜索完第一个字符后,
//根据此字符切割,只要此字符以后的字符,
//下一次遍历则在新的字符串遍历
String b=a+"";
//根据字符切割问两个字符串
String[] p1=p.split(b, 2);
/* System.out.println("长度:"+p1.length);
System.out.println(p1[0]);
System.out.println(p1[1]);*/
//把p从新赋值,形成新的字符串
p=p1[1];
res=true;
}
System.out.println(res);
}
}
希望能帮的到大家,如果有不懂的,联系我,欢迎一起讨论