2012-09-15 3 views
0

나는 파일에서 한 줄의 텍스트를 읽기 위해이 코드를 사용하고 있습니다 :파일에서 ' t'를 식별하는 방법은 무엇입니까?

BufferedReader br = new BufferedReader(new FileReader("myFile.txt")); 
String line = br.readLine(); 

라인은 탭이 포함 된 경우 : (\의 t)를이 문자가 제대로 읽을 수 없습니다. 그냥 빈 공간으로 나타납니다. 현재 읽고있는 텍스트 줄에 탭 문자가 포함되어 있는지 어떻게 알 수 있습니까?

+1

텍스트는 "어떻게 탭 문자는 읽을 현재의 문자 인 경우 확인할 수 있습니까?"문자로 문자 만 라인으로 오히려 라인, 그래서 읽기'되지 않는'에 이해가되지 않습니다 나를. 'contains (...)'나 'indexOf (...)'와 같은 String 메소드를 사용하여 라인에 특정 char 또는 String이 포함되어 있는지 여부는 물론 확인할 수 있습니다. –

+0

@ Hovercraft Eels Thanks, Full이 내 질문을 업데이트했습니다. 텍스트 파일에 \ t 문자가 포함되어 있지만 읽은 문자열의 문자를 출력 할 때 빈 문자로 표시됩니다. 즉 \ t는 읽지 않습니다. –

답변

1

경우 같은 것을하여 경우 탭으로 공백 문자를 확인할 수 있지만 출력 읽기 문자열의 문자가,이 나타나면 빈, 즉 \ t을 (를) 읽을 수 없습니다.

첫 번째 반응은 출력을 표시하는 것이 무엇이든간에 발생하는 오류입니다. 출력을 파일로 리다이렉션하고, 알 수있는 툴을 사용하여 출력을 시도해보십시오. 텍스트가 있으면 탭 문자가 표시됩니다. (예 : UNIX/Linux를 사용하는 경우 od 유틸리티). 입력 파일도 확인하십시오.

현재 읽고있는 텍스트 줄에 탭 문자가 포함되어 있는지 어떻게 확인할 수 있습니까?

for (char ch : line.toCharArray()) { 
     if (ch == '\t') { 
      System.err.println("BINGO!!"); 
     } 
    } 
+0

@oldrinb - 감사합니다. (나는 내 ​​기억에 의지해서는 안된다 ...) –

1

빈 공간이라고 판단되면 문자열을 인쇄하여 사용중인 터 L 널의 탭 문자 해석을 볼 수 있습니다. 대부분의 터미널 드라이버는 탭 문자 (ASCII 9)를 "8의 배수 인 열로 이동"하여 오래된 타자기의 동작을 시뮬레이트하는 것으로 간주합니다.

문자열의 각 문자에 대해 charAt(...)을보고 대신 9 값을 찾으십시오.

0

as 호크스 오브 웁스 방금 ​​말했듯이, 당신은 숯에 의한 숯이 아니라 전체 라인을 읽고 있습니다.

어쨌든

, 당신은 텍스트 파일이 \의 t 문자를 포함 (String.charAt(pos) == '\t') { do stuff with it }

관련 문제