`

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;
    }
分享到:
评论

相关推荐

    JAVA经典问题自己写程序验证

    在Java编程领域,经典问题通常涉及算法、数据结构和设计模式等核心概念,这些问题的解决有助于提升编程技能和深入理解Java语言。以下是一些常见的Java经典问题及其详细解析: 1. **数组与集合操作**: - 数组是...

    Coding Interview in Java

    12. 字符串匹配问题:如Wildcard Matching(通配符匹配)、Flip Game(翻转游戏)等,这些题目要求熟悉字符串处理以及递归回溯等算法。 13. 字符串处理高级问题:如Scramble String(错乱字符串),验证字符串的...

    算法刷题笔记leetcode/lintcode

    - Valid Palindrome(回文字符串验证) - Longest Palindromic Substring(最长回文子串) - Space Replacement(URL化) - Wildcard Matching(通配符匹配) - Length of Last Word(最后一个单词的长度) - ...

    ds-and-algorithms:数据结构和算法问题,以及针对JavaScript,TypeScript,Go和Java的解决方案说明和实现

    使用JavaScript,TypeScript,Go和Java的数据结构和算法问题 数据结构和算法问题,以及针对不同语言的解决方案说明和实现 :bar_chart: 按主题组织 二叉树 -硬 -中 -中 -中 -简单 -中 堆 -中 -困难 弦乐 简单 通过...

    Java面试宝典

    6. **字符串与字符串缓冲区**: - String类:不可变性、常用方法如concat、substring、indexOf等。 - StringBuffer/StringBuilder:可变字符串,适合大量拼接操作。 7. **内存管理**: - 内存区域:堆、栈、方法...

    src_java_nfa转化_serves88_

    在IT领域,正则表达式是一...在Java中,我们可以利用NFA实现高效的字符串匹配,比如在文本搜索、输入验证等场景。总的来说,NFA转化算法是理解正则表达式处理机制的关键,而Java的实现则为我们提供了可复用的代码框架。

    黑马程序员面试宝典(java)2018版

    - 字符串操作:掌握concat()、substring()、indexOf()、replace()等常用方法。 4. **集合框架** - List、Set、Queue接口及其实现类:ArrayList、LinkedList、HashSet、TreeSet、LinkedList、PriorityQueue等的...

    java开发常用单词总结

    - **String**:字符串类,用于表示文本字符串。 - **System**:系统类,提供系统相关的操作,如获取系统属性和执行系统操作。 - **out**:输出,`System.out`对象,用于标准输出。 - **print**:同行打印,用于向...

    面试中可能被问到的JAVA问题

    `StringBuilder`和`StringBuffer`用于构建可变字符串,其中`StringBuffer`是线程安全的。 - **集合框架**:包括`List`、`Set`、`Map`等接口及其实现类如`ArrayList`、`LinkedList`、`HashSet`、`HashMap`等。 **2. ...

    java成神之路

    - **String**: 不可变性、内部实现、字符串拼接等。 - **基本类型与包装类型**: 区别及其转换。 - **集合类**: ArrayList、LinkedList、HashMap等的区别和使用场景。 - **枚举**: 枚举的实现方式和优点。 - **反射**...

    JAVA经典教材笔记

    - 字符串操作方法:concat、substring、indexOf等。 - 比较字符串:equals与==的区别。 - **引用传递及其应用** - 引用传递的深入理解:传递的是对象地址而非副本。 - 应用场景:修改对象状态。 - **this关键字*...

    传智播客视频JavaSE学习笔记

    正则表达式是一种用于匹配字符串的强大工具,可用于验证输入数据格式、文本搜索和替换等,Java中的`Pattern`和`Matcher`类提供了正则表达式支持。 以上是根据传智播客视频JavaSE学习笔记总结的关键知识点,覆盖了...

    Java安全与质量编码规范.docx

    - **循环中避免使用低性能方式拼接字符串:** 使用StringBuilder或StringBuffer替代字符串拼接操作。 - **避免使用递归:** 除非特殊情况,否则应避免使用递归,以防栈溢出。 - **sleep()参数控制:** 合理设置...

    Java基础题

    6. **字符串处理**:String类是不可变的,了解StringBuilder和StringBuffer在性能上的差异。 7. **集合框架**:熟悉List、Set和Map接口及其主要实现类,包括遍历、添加、删除元素的方法。 8. **泛型**:了解泛型的...

    java网上交易系统的开发

    而对空值的处理,比如检查一个对象是否为空,或者一个字符串是否为空,可以通过empty操作符来进行判断,这在处理用户输入数据时尤其重要。 总结来说,开发一个基于JSP、Servlet和JavaBean的网上交易系统,需要掌握...

    Java安全与质量编码规范

    - **循环中避免使用低性能方式拼接字符串**:使用StringBuilder或StringBuffer代替连续的字符串拼接。 - **避免使用递归**:对于深度较深的递归,考虑使用迭代替代。 - **sleep()参数控制**:合理设置sleep()函数...

    JAVA面试题总汇:j2ee面试知识.pdf

    - **代码层面:** 优化算法、减少循环嵌套、字符串操作优化。 - **系统层面:** JVM调优、数据库调优、分布式系统性能调优技巧。 - **网络层面:** 减少HTTP请求次数、利用CDN、压缩数据传输。 #### 10. 测试和调试...

    codingbat:Java语言CodingBat习题解答

    5. **字符串处理**:字符串拼接、查找、替换、分割等操作。 6. **异常处理**:try-catch-finally语句,自定义异常。 7. **输入/输出**:文件读写、Scanner类、System.in输入。 8. **泛型**:类型通配符、泛型类和...

Global site tag (gtag.js) - Google Analytics