2015-01-26 3 views
-2
if (thirdLastLine.matches("Tests run: 12, Failures: 3")) { 



     System.out.println("Found: " + thirdLastLine); 

    } else { 
     System.out.println("No conditionString In File"); 
    } 

if 문에 값을 쓰려면 모든 값에 대해 단일 조건을 쓰는 것이 좋지 않습니다. 나는 어떤 가치도없이 이것을 할 수 있었는지 궁금했다. something : if (lines.contains ("Tests run : '', Failures : ''"))) 시도했지만 작동하지 않습니다 .. 어떻게해야합니까? 감사합니다문자열에서 알 수없는 값을 확인하는 방법

답변

4

이 경우 regular expressions을 사용할 수 있습니다.

예를 들어

:

// your input String 
String line = "Tests run: 12, Failures: 3"; 
// Defines a pattern where "Failures: [any number of digits > 0]" 
Pattern p = Pattern.compile("Failures: [1-9]+[0-9]*"); 
// Defines a matcher for your pattern against that line 
Matcher m = p.matcher(line); 
// iterates over matches and prints the outcome if any 
while (m.find()) { 
    System.out.printf("Found: %s%n", m.group()); 
} 

출력

Found: Failures: 3 
+0

그 정규식은 0 실패 필터링합니다. 0, 즉 10, 100 등의 숫자는 올바르게 처리하지 않습니다. EDIT :이 문제가 수정되었습니다. – Chrono

+1

새로운 문제 :'[1-9] + [0-9]?'100과 같이 여러 개의 0은 작동하지 않습니다. 대신 [[1-9] [0-9] *'를 사용하십시오. – Chrono

+0

@Willem 저것을 위해 고맙다 - 나는 빨리 편집하고주의하지 않았다 :) – Mena

0

를 사용하여 정규 표현식 :

if (lines.matches("Tests run: [0-9]+, Failures: [0-9]+")) { 
     System.out.println("OK"); 
    } 
    else { 
     System.out.println("KO"); 
    } 

편집 :
내가 다시 정규 표현식에서 +에 대해 *을 배치했습니다.

+0

난 그냥 포함 메서드를 사용하여이 시도했지만 일치하는 메서드를 액세스 할 수 없기 때문에 작동하지 않습니다. 덕분에 – Buzz

+0

''lines'이'String'이라고 가정 했죠? 반면에,'contains()'는 정규 표현식을 인정하지 않고'CharSequence'를 사용합니다. 그리고'matches()'메서드는 'String' – Albert

+0

예에 적용됩니다. 변수 'lines'을 'thirdLastLine'으로 변경했습니다.이 파일은 읽을 파일의 특정 행에보다 구체적입니다. 현재 코드를 시도했지만 여전히 작동하지 않습니다. 그것은 내가 잘하지 못하는 당신의 패턴과 관련이 있습니다. – Buzz

0

if (thirdLastLine.matches ("테스트 실행 : ([1-9] | 1 [0-9] | 2 [0-3]), 실패 : ([1-9] | 1 [0-9 ] | 2 [0-3]) ")) { System.out.println ("Ok "); } else { System.out.println ("Not Ok"); }

이 정규식은 나이를 먹은 후에 트릭을 만들었습니다. 귀하의 답변 주셔서 감사합니다 :)

관련 문제