2013-03-27 76 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