`

Java字符串通配符验证算法

阅读更多
因程序中要用到通配符匹配方法 ,网上找了一些,不如人意,就自己动手写了一个方法。
以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;
    }
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics