2016-09-14 9 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または##:##ユーザからの入力に基づいてPM。これはうまくいくのでしょうか?この方法で入力とパターンを一致させる方法がありますか?

+1

hmm。あなたは 'matches()'と2つのスラッシュを使う必要があります。 – TheLostMind

答えて

3

最初にを入力しない Java(\\d)のためにエスケープするのを忘れないように!!

booleanを返す正規表現関数match()も使用してください。デフォルトライブラリ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(); 
} 

あなたは簡単にampmの両方で成功を与えるaの1またはpをMathesの[ap]mを使用してif-else文を避けることができることに注意してください。

しかし最も簡単かつ直接的な方法は次のとおりです。

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

Wonderful、これは私が必要としていたものです。ありがとうございました!今すぐ先のゼロ問題を修正するために、この割り当てはドキュメンテーション>を除いて行われます。< – Moira

+0

喜んで私は歓迎しました:) –

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

あなたの方法を大幅に簡素化されるので、文字列は、一つの試験のいずれかで一致したAMまたはPM場合、これはチェックします。

関連する問題