`
sunlujing
  • 浏览: 177912 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 实现含通配符的字符串匹配

阅读更多

算法目标,对于 字符串 abcd1dd2deeedd9 能偶匹配到字符串 abc*dd?;*代表任意个数的字符串,?代表一个字符.

分两步走,

第一步实现含?而不含*的 字符串匹配,如对dd?的匹配 

第二步,实现含有* 的字符串的匹配,如abc* dd?,主要思路是用* split 字符串,分为两个有效的串,abc, dd?

然后使用步骤一种的方法来查看匹配到的index.

 

 

 /**

   * 找出含?的字符串

   * @return

   */

  public int checkSubPattern(String src,int begin,String pat){

  boolean isFound=true;

  if(src.length()-begin < pat.length()){return -1;}

  for(int i=begin;i<src.length()-pat.length()+1;i++){

  for(int j=0;j<pat.length();j++){

  if(pat.charAt(j)!='?' && src.charAt(i+j)!=pat.charAt(j)){

  isFound =false;

  break;

  }

  isFound = true;

  }

  if(isFound){return i;}

  }

  return -1;

  }

 

 

 

  public boolean checkStar(String src,String pat){

  String[] sub_p = pat.split("\\*");

 

  int begin =0;

  for(int i=0;i< sub_p.length;i++){

 

   begin = checkSubPattern(src,begin,sub_p[i]);

   System.out.println(begin);

   if(begin==-1){return false;}

   if(i==0 && pat.charAt(i)!='*' &&begin!=0){return false;}

   if((i==sub_p.length-1)  && pat.charAt(i)!='*' &&begin!=(src.length()-                                      sub_p[i].length())){return false;}

  }

  return true;

  }

 

0
0
分享到:
评论
3 楼 瓶鱼跃 2012-11-01  
测试了楼主的方法,用楼主的字符串,怎么返回的是false??
2 楼 sunlujing 2012-10-29  
面试题,不让用正则表达式,他其实就是想让你分析下正则表达式的内部实现
1 楼 muyishuihan 2012-10-29  
为什么不用正则表达式做呢?
public static boolean isMatching(String src,String des){

String des1 = des.replace("*", "\\w*");
des1 = des1.replace("?", "\\w{1}");
Pattern p = Pattern.compile(des1);
Matcher m = p.matcher(src);
return m.matches();
}

相关推荐

    wildcard-string-matching:字符串匹配,其中一个字符串包含通配符 (http

    通配符字符串匹配字符串匹配,其中一个字符串包含通配符( )

    wildcard:通配符模式匹配

    让 sWild 是一个通配符字符串,而 sTame 是一个非通配符字符串。 使用方法是: boolean match = Wildcard.matchFound(String sWild, String sTame); 返回值指示两个字符串是否匹配。 默认情况下,此方法区分大小...

    Java开发技术大全(500个源代码).

    ArrayString.java 字符串数组 assignTwoDime.java 为二维数组赋值 getMaxElem.java 获取数组中的最大元素 incCapicity.java 演示StingBuffer的容量增长 SortDemo.java 排序示例 travelTwoDime.java 遍历二维...

    将您的字符串与通配符匹配

    本文为您提供了一个如何将字符串与*和?相比较的想法。 所谓的通配符

    去年秋招整理了这份后端开发的核心面试题(偏Java),顺利拿到了腾讯offer,决定把它贡献出来

    2019年为了秋招,精挑细学了这一份面试题,并且只挑重点和难点,此次整理包括 Java、数据结构与算法、计算机网络、操作系统、数据库等。如果你能把这些面试题都掌握了,那么,我相信你肯定能拿到一个不错的 offer,...

    CommonUtils.java

    字符串转BigDecimal,Double,Float,Integer 判断字符串是否在集合中 通配符算法。 可以匹配"*"和"?

    java范例开发大全源代码

     实例42 字符串索引越界异常(StringIndexOutBounds) 60  实例43 操作错误(UnsupportedOperationException) 60  4.2 运行时异常 61  实例44 找不到指定类时发生的异常(ClassNotFoundException) 62 ...

    Java2核心技术.part5

    12.4.2字符串记号处理器和带分隔符的文本 12.4.3读取带允隔符的输入 12.4.4 StringBuilder类 12.4.5随机存取流 12.5对象流 12.5.1存储可变类型的对象 12.5.2理解对象序列化文件格式 12.5.3...

    java范例开发大全

    实例42 字符串索引越界异常(StringIndexOutBounds) 60 实例43 操作错误(UnsupportedOperationException) 60 4.2 运行时异常 61 实例44 找不到指定类时发生的异常(ClassNotFoundException) 62 实例45 请求的...

    Java范例开发大全 (源程序)

     实例42 字符串索引越界异常(StringIndexOutBounds) 60  实例43 操作错误(UnsupportedOperationException) 60  4.2 运行时异常 61  实例44 找不到指定类时发生的异常(ClassNotFoundException) 62  ...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例074 将字符串的每个字符进行倒序输出 94 实例075 获取字符串中汉字的个数 94 实例076 批量替换某一类字符串 95 实例077 把异常与错误信息显示到窗体中 97 实例078 从字符串中分离文件路径、 文件名及扩展名 98 ...

    Java范例开发大全(全书源程序)

    实例42 字符串索引越界异常(StringIndexOutBounds) 60 实例43 操作错误(UnsupportedOperationException) 60 4.2 运行时异常 61 实例44 找不到指定类时发生的异常(ClassNotFoundException) 62 实例45 请求...

    java范例开发大全(pdf&源码)

    实例42 字符串索引越界异常(StringIndexOutBounds) 60 实例43 操作错误(UnsupportedOperationException) 60 4.2 运行时异常 61 实例44 找不到指定类时发生的异常(ClassNotFoundException) 62 实例45 请求的...

    Java2核心技术.part3

    12.4.2字符串记号处理器和带分隔符的文本 12.4.3读取带允隔符的输入 12.4.4 StringBuilder类 12.4.5随机存取流 12.5对象流 12.5.1存储可变类型的对象 12.5.2理解对象序列化文件格式 12.5.3...

    Java2核心技术.part1

    12.4.2字符串记号处理器和带分隔符的文本 12.4.3读取带允隔符的输入 12.4.4 StringBuilder类 12.4.5随机存取流 12.5对象流 12.5.1存储可变类型的对象 12.5.2理解对象序列化文件格式 12.5.3保存对象...

    Java2核心技术.part6

    12.4.2字符串记号处理器和带分隔符的文本 12.4.3读取带允隔符的输入 12.4.4 StringBuilder类 12.4.5随机存取流 12.5对象流 12.5.1存储可变类型的对象 12.5.2理解对象序列化文件格式 12.5.3...

    Java2核心技术.part4

    12.4.2字符串记号处理器和带分隔符的文本 12.4.3读取带允隔符的输入 12.4.4 StringBuilder类 12.4.5随机存取流 12.5对象流 12.5.1存储可变类型的对象 12.5.2理解对象序列化文件格式 12.5.3...

Global site tag (gtag.js) - Google Analytics