因程序中要用到
通配符匹配方法 ,网上找了一些,不如人意,就自己动手写了一个方法。
以param="/*test/find*haha*kk", realData="/88test/find8888haha8888kk"做验证,没有问题,其它更简单的方式也验证通过,如果读者
发现有问题,欢迎指正。
强调一下:这里不是
正则表达式匹配,是通配符匹配。
public Boolean judge(final String param, final String realData) {
if(! Pattern.matches(param, realData)){
if(param.contains("*")) {
String noParam=param.replaceAll("\\*","");
if (realData.contains(noParam)){
return true;
}else{
if(noParam.length()>realData.length())
return false;
String[] myparam=param.split("\\*");
int curIndex=0;
int prePostion=0;
int num=0;
for(String duan:myparam){
num++;
curIndex=realData.indexOf(duan);
if(curIndex==-1)return false;
if(curIndex>=prePostion){
prePostion=curIndex+duan.length();
if(num==myparam.length)return true;
}else{
return false;
}
}
}
}
return false;
}
return true;
}