2013-03-27 45 views
0

我正尝试在Java中实现通配符。Java中的Wild Card搜索字符串

这里是我的代码有

public class Assign { 

    public boolean compare(String s1, String s2) 
    { 
     char [] s3 = s1.toCharArray(); 
     char [] s4 = s2.toCharArray(); 
     int i,j; 

     int k = 0; 
     for(i=0;i<s3.length;i++) 
     { 
      for(j=0;j<s4.length;j++) 
      { 
       if(s3[i] == s4[j]) 
       { 

        if(s4[j] == '*') 
        { 
         i++; 

         if(s3[i] == s4[s4.length-1]) 
         { 
          return true; 
         } 
        } 
       } 
      } 
     } 
     return false; 
    } 
    public static void main(String args[]) 
    { 
     Assign a = new Assign(); 
     boolean r = a.compare("a hello b", "a * b"); 
     System.out.println(r); 
    } 
} 

会有要传递给函数的两个参数。一个是字符串,另一个是正则表达式。

实施例的情况下是:

1)如果传递的字符串是“你好b”和正则表达式是“A * B”,则该函数应该因为在*任何数量的字符可以代替返回TRUE存在。 2)如果传递的字符串是“a X b”并且正则表达式是“a?b”,那么返回值应该是TRUE,因为如果有?在正则表达式中,a和b之间应该只有一个字符。

像这样,它应该适用于所有情况。我认为我认为的逻辑很好,但我在编码部分遇到麻烦。

我不想导入模式和匹配器。没有他们,我必须完成这一点。

请问,任何人都可以帮助我解决这个问题。

感谢你

+1

为什么不使用对Java内置的正则表达式的支持? – Petr 2013-03-27 13:23:34

+0

你的正则表达式是错误的。它应该是“a。* b” – 2013-03-27 13:24:34

+0

除了你的正则表达式是错误的,首先看看这个:http://docs.oracle.com/javase/6/docs/api/java/util/regex/package- summary.html – 2013-03-27 13:25:28

回答

0

如果您看到'?'然后跳过一个字符。如果您看到一个'*',则在剩余输入中递归调用搜索函数,直到找到匹配项。

+0

是的。那是我想要的。你能帮我解码吗? – 2013-03-27 13:57:55