2012-03-15 5 views
2

Scanner 클래스는 공백을 건너 뛰고 전체 문자열 토큰을 가져 오는 편리한 방법을 제공합니다. 그러나, 나는이 같은 입력을 통해 스캔하는 스캐너를 사용하고 follows-Java에서 String a Scanner가 건너 뛴 것을 찾아내는 방법이 있습니까?

Public Type XYZ 
     A(3) As Byte 
     B(0) As Byte 
     C(0) As Byte 
    End Type 

나는 입력이 다음과 같은 상황 -

가 발생하고있다. 스캐너는 "공용", "유형", "XYZ"등과 같은 토큰을 올바르게 반환합니다. 그러나 건너 뛴 내용을 찾는 방법이 있습니까? 예를 들어, XYZ 다음에 스캐너는 실제로 공백 대신 "\ n"을 건너 뜁니다 (""). 스캐너가 건너 뛴 것을 찾는 방법은 무엇입니까?

+0

내가 아는 한 모든 공백을 비슷하게 처리 할 수 ​​있으므로 이것이 가능하지 않다고 생각합니다. 아마도 이것을하기 위해 좀 더 견고한 파서를 사용해야 할 것입니다. 아마 Yacc? 이것이 내 안락 지대에서 멀어지기 때문에 나는 모른다. –

+0

'\ n' *은 공백입니다. 여기에 "대신"아무 것도 포함되어 있지 않습니다 :) –

+2

그 말은 ... 당신이 원하는 것이 아니라면, 당신은'useDelimiter()'메쏘드로 구분 기호를 바꿀 수 있고 공백을 건너 뛰도록 할 수 있습니다. –

답변

1

Scanner 클래스가 후행 구분 기호없이 토큰을 반환하기 때문에 불가능합니다. 이 경우 후행 공백 문자가 없습니다. 나는 그것을 되돌릴 방법이 있다고 생각하지 않는다.

한 가지 해결책은 BufferedReaderFileReader 클래스를 사용하여 한 줄씩 파일을 구문 분석하는 것입니다. 그렇게하면 캐릭터에 개별적으로 액세스 할 수 있습니다.

+0

흠. Scanner 클래스에서이 기능을 사용하기를 바랍니다. – CodeBlue

관련 문제