2012-07-06 2 views
0

나는 텍스트를 포함하는 텍스트 파일을 구문 분석하고에 일치 : 나는 파일을 구문 분석하고의 발생 수를 계산하려고 코드를 구현 한Scanner.hasNext 문자열은 자바

Level1 
Some-text-here 
Level2 
Some-text-here 
Level3 
Some-text-here 

파일의 "레벨". 이것은 내가 그 일을하고 어떻게 :

Scanner scanner = new Scanner(new File(inPath)); 
Pattern p = Pattern.compile("Level"); 
while(scanner.hasNext()) { 
    if(scanner.hasNext(p)) { 
     ++lastLevelCreatedWas; 
    } 
    scanner.next(); 
} 

그러나 hasNext (P)는 "레벨"의 정확한 일치를 찾기 위해 노력하고 단지 단어를 무시하기 때문 명중 않겠다 결코 '의 경우'조건 '레벨 1', "Level2"등등. 키워드 "레벨"이 포함 된 단어를 어떻게 고려해야합니까?

Scanner scanner = new Scanner(new File(inPath)); 
scanner.useDelimiter("Level"); 
while(scanner.hasNext()) { 
    ++lastLevelCreatedWas; 
    scanner.next(); 
} 

그것은 당신이 원하는대로 다음 "레벨"토큰으로 이동하면서 :

답변

3

난 당신이 시도 Scanner.useDelimiter

을 찾고 생각합니다.

+0

그래, 그 트릭을 했어. 문자열을 매칭하여 그것을하고 싶다면 어떻게해야할까요? 내가 Patter.compile ("Level", Pattern.COMMENTS)과 같은 것을 사용하겠습니까 ?? – Rafay

+1

당신은 수준을 소모하기 원한다면'scanner.useDelimiter ("Level \\ d +");',''Level "'다음에 1-n 숫자를 사용하고 싶을 것입니다 – Bohemian

2

hasNext, getNext 및 기타 유사한 메서드는 구분 기호가 설정된 경우에만 작동합니다.

useDelimiter 메서드를 호출하여 Scanner 인스턴스에 구분 기호를 설정합니다.