2012-09-15 47 views
0

我使用此代码从文件中读取一行文字:如何识别文件中的' t'?

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

如果行包含标签(\ t),则该字符无法正确读取。它只是表现为一个空白的空间。如何确定当前正在读取的文本行中是否包含制表符?

+1

文本没有被读取成炭炭,而是由行而行,所以'“我怎么能确定一个制表符正在读取当前字符?”'没有任何意义我。您当然可以使用String方法(如contains(...)或indexOf(...))查看某行是否包含某个char或String。 –

+0

@Hovercraft全部的鳗鱼THANKs,ive更新了我的问题。文本文件包含\ t字符,但是当我在读取字符串中输出字符时,它显示为空,即\ t未被读取。 –

回答

1

文本文件包含\ t字符,但是当我输出在读字符串中的字符,它显示为空,即\ t没有被读取。

我的第一反应是这是显示输出的任何错误。尝试将输出重定向到文件并使用您知道的工具查看它,如果它们在那里,将显示任何制表符。 (例如,如果您使用的是UNIX/Linux,则为od实用程序。)并检查输入文件。

如何确定当前正在读取的文本行中是否包含制表符?

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

@oldrinb - 谢谢。 (我不应该依赖我的记忆......) –

1

如果您确定它是一个空白空间,通过打印出字符串,您将看到您正在使用的终端对制表符的解释。大多数终端驱动程序认为制表符(ASCII 9)意思是“跳转到8的倍数”,模拟旧打字机的行为。

请考虑查看字符串中每个字符的charAt(...),然后查找值9。

0

作为气垫船全部鳗鱼刚才说,你正在读一整行,而不是char字符。

不管怎么说,你可以通过一些检查,如果它是一个标签空白字符一样,如果(String.charAt(pos) == '\t') { do stuff with it }