因程序中要用到通配符匹配方法 ,网上找了一些,不如人意,就自己动手写了一个方法。
以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经典问题及其详细解析: 1. **数组与集合操作**: - 数组是...
12. 字符串匹配问题:如Wildcard Matching(通配符匹配)、Flip Game(翻转游戏)等,这些题目要求熟悉字符串处理以及递归回溯等算法。 13. 字符串处理高级问题:如Scramble String(错乱字符串),验证字符串的...
- Valid Palindrome(回文字符串验证) - Longest Palindromic Substring(最长回文子串) - Space Replacement(URL化) - Wildcard Matching(通配符匹配) - Length of Last Word(最后一个单词的长度) - ...
使用JavaScript,TypeScript,Go和Java的数据结构和算法问题 数据结构和算法问题,以及针对不同语言的解决方案说明和实现 :bar_chart: 按主题组织 二叉树 -硬 -中 -中 -中 -简单 -中 堆 -中 -困难 弦乐 简单 通过...
6. **字符串与字符串缓冲区**: - String类:不可变性、常用方法如concat、substring、indexOf等。 - StringBuffer/StringBuilder:可变字符串,适合大量拼接操作。 7. **内存管理**: - 内存区域:堆、栈、方法...
在IT领域,正则表达式是一...在Java中,我们可以利用NFA实现高效的字符串匹配,比如在文本搜索、输入验证等场景。总的来说,NFA转化算法是理解正则表达式处理机制的关键,而Java的实现则为我们提供了可复用的代码框架。
- 字符串操作:掌握concat()、substring()、indexOf()、replace()等常用方法。 4. **集合框架** - List、Set、Queue接口及其实现类:ArrayList、LinkedList、HashSet、TreeSet、LinkedList、PriorityQueue等的...
- **String**:字符串类,用于表示文本字符串。 - **System**:系统类,提供系统相关的操作,如获取系统属性和执行系统操作。 - **out**:输出,`System.out`对象,用于标准输出。 - **print**:同行打印,用于向...
`StringBuilder`和`StringBuffer`用于构建可变字符串,其中`StringBuffer`是线程安全的。 - **集合框架**:包括`List`、`Set`、`Map`等接口及其实现类如`ArrayList`、`LinkedList`、`HashSet`、`HashMap`等。 **2. ...
- **String**: 不可变性、内部实现、字符串拼接等。 - **基本类型与包装类型**: 区别及其转换。 - **集合类**: ArrayList、LinkedList、HashMap等的区别和使用场景。 - **枚举**: 枚举的实现方式和优点。 - **反射**...
- 字符串操作方法:concat、substring、indexOf等。 - 比较字符串:equals与==的区别。 - **引用传递及其应用** - 引用传递的深入理解:传递的是对象地址而非副本。 - 应用场景:修改对象状态。 - **this关键字*...
正则表达式是一种用于匹配字符串的强大工具,可用于验证输入数据格式、文本搜索和替换等,Java中的`Pattern`和`Matcher`类提供了正则表达式支持。 以上是根据传智播客视频JavaSE学习笔记总结的关键知识点,覆盖了...
- **循环中避免使用低性能方式拼接字符串:** 使用StringBuilder或StringBuffer替代字符串拼接操作。 - **避免使用递归:** 除非特殊情况,否则应避免使用递归,以防栈溢出。 - **sleep()参数控制:** 合理设置...
6. **字符串处理**:String类是不可变的,了解StringBuilder和StringBuffer在性能上的差异。 7. **集合框架**:熟悉List、Set和Map接口及其主要实现类,包括遍历、添加、删除元素的方法。 8. **泛型**:了解泛型的...
而对空值的处理,比如检查一个对象是否为空,或者一个字符串是否为空,可以通过empty操作符来进行判断,这在处理用户输入数据时尤其重要。 总结来说,开发一个基于JSP、Servlet和JavaBean的网上交易系统,需要掌握...
- **循环中避免使用低性能方式拼接字符串**:使用StringBuilder或StringBuffer代替连续的字符串拼接。 - **避免使用递归**:对于深度较深的递归,考虑使用迭代替代。 - **sleep()参数控制**:合理设置sleep()函数...
- **代码层面:** 优化算法、减少循环嵌套、字符串操作优化。 - **系统层面:** JVM调优、数据库调优、分布式系统性能调优技巧。 - **网络层面:** 减少HTTP请求次数、利用CDN、压缩数据传输。 #### 10. 测试和调试...
5. **字符串处理**:字符串拼接、查找、替换、分割等操作。 6. **异常处理**:try-catch-finally语句,自定义异常。 7. **输入/输出**:文件读写、Scanner类、System.in输入。 8. **泛型**:类型通配符、泛型类和...