2016-09-14 191 views
0

我已經寫了一個方法,用於在程序前進之前將字符串輸入與特定模式匹配,但Netbeans IDE告訴我轉義字符是非法的。我不知道如何解決它。如何匹配字符串?

的方法如下:

public static boolean patternMatch(String ct){ 

    if(ct.equals("\d\d:\d\dam")){ 
     return true; 
    } 
    else { 
     if(ct.equals("\d\d:\d\dpm")) 
      return true; 
    } 

    return false; 
} 

的模式是需要匹配##的時間圖案:## am或##:根據來自用戶的輸入##時。這是一個工作嗎?有沒有一種方法可以通過這種方式使其與輸入匹配?

+1

hmm。你需要使用'matches()'和兩個斜槓 – TheLostMind

回答

3

第一.. 不要因爲Java而忘了雙倍轉義(\\d)!!

使用正則表達式函數match()也返回boolean。您可以使用默認庫java.util.regex.中的類MatcherPattern

public static boolean patternMatch(String ct) { 
    Pattern p = Pattern.compile("\\d\\d:\\d\\d[ap]m"); 
    Matcher m = p.matcher(ct); 
    return m.matches(); 
} 

注意,你可以很容易地避免使用[ap]mif-else聲明MATHES的a一個或p給兩個ampm成功。

但是最簡單,最直接的方法是:

return ct.matches("\\d\\d:\\d\\d[ap]m"); 
+0

很棒,這正是我所需要的。謝謝!現在要解決領先的零問題,這個任務最終是從文檔中完成的。< – Moira

+0

很高興我幫助過,歡迎:) –

1
public static boolean patternMatch(String ct){ 
    return ct.matches("\\d\\d:\\d\\d[ap]m"); 
} 

如果字符串匹配AM或PM,在一次測試中,所以你的方法被大大簡化這將檢查。