2016-09-14 6 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

흠. 'matches()'와 두 개의 슬래시를 사용해야합니다. – TheLostMind

답변

3

처음 .. 하지 않습니다 자바 (\\d) 때문에 두 번 이스케이프하는 것을 잊지 마세요 !!

boolean을 반환하는 정규식 함수 match()도 사용하십시오. 기본 라이브러리 java.util.regex.의 클래스 MatcherPattern을 사용할 수 있습니다. 쉽게 a 중 하나 ampm 모두에서 성공을 제공 p을 MATHES [ap]m를 사용하여 if-else 문을 피할 수

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

참고.

가장 쉽고 직접적인 방법은 단 :

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"); 
} 

문자열 그래서 당신의 방법은 크게 간소화되어, 하나 개의 테스트에서 하나가 오전 일치하거나 오후 경우가 확인합니다.

관련 문제