用String 类的 indexOf() 方法来判断。应该可以。

解决方案 »

  1.   

    思路 : 用StringTokenizer 把通配符(?,%)从第一个String 参数中分出来,把剩下的String ,用indexOf()方法来检验,如果返回值〉= 0 那就true.
      

  2.   

    如果是jdk1.4他的String有新的方法支持正则表达式
    或者到apache上找regexp,也是个支持正则表达式的包
    前提你要明白正则表达试
      

  3.   

    告诉你我是怎么做的:
    先把字符串中‘*’换成"\\S*","?"换成"\\S?",然后用jdk1.4的String类的match函数。
      

  4.   

    只能用正则表达式做,否则自己写的话,
    等着痛苦吧,你会发现无穷无尽的bug,bug,bug...
      

  5.   

    同 qxjavajava(射手座 =--->听歌看海)
      

  6.   

    public boolean compStr(String pattern,String Data){
       java.util.StringTokenizer t = new java.util.StringTokenizer(pattern,"?");
       String part;
       boolean valid=true;
       int pos=0;
       while (t.hasMoreTokens()){
         part=t.nextToken();
         System.out.println(part);
         pos=Data.indexOf(part,pos);
         if (pos < 0){
           valid=false;
           break;
         }else{
           pos+=part.length();
         }
       }
       return valid;
      }
      

  7.   

    public boolean compStr(String pattern,String Data){
       java.util.StringTokenizer t = new java.util.StringTokenizer(pattern,"%");
       String part;
       boolean valid=true;
       int pos=0;
       int nextpos=0;
       String subPart;
       java.util.StringTokenizer t1;
       while (t.hasMoreTokens()){
         part=t.nextToken();
         t1=new java.util.StringTokenizer(part,"?");
         //第一个子串
         if(t1.hasMoreTokens()){
           subPart=t1.nextToken();
           nextpos=Data.indexOf(subPart,pos);
           //判定前面有几个连续的?
           if ((nextpos-pos)<part.indexOf(subPart)){
             valid=false;
             break;
           }else{
             pos=nextpos-part.indexOf(subPart);
           }
         }
         //
         int fromPos=0;
         int toPos=0;
         while(true){
           toPos=part.indexOf("?",fromPos);
           if (toPos<0){
             toPos=part.length();
           }
           if (Data.length()<pos+(toPos-fromPos)){
             valid=false;
             break;
           }
           if (!part.substring(fromPos,toPos).
               equals(Data.substring(pos,pos+(toPos-fromPos)))){
             valid=false;
             break;
           }
           if (toPos==part.length()){
             pos=pos+toPos-fromPos;
             break;
           }else{
             pos=pos+toPos-fromPos+1;
             fromPos=toPos+1;
           }
          }     //
         if (!valid)
           break;
       }
       return valid;
      }
      

  8.   

    JDK1.4不是支持正则表达式吗?