0

我正在使用此代码从文件中读取一行文本:

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

如果该行包含制表符 : (\t) 则该字符未被正确读取。它只是显示为一个空白空间。如何确定当前正在读取的文本行中是否包含制表符?

4

3 回答 3

1

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

考虑查看charAt(...)字符串中的每个字符并改为查找值 9。

于 2012-09-15T23:40:48.033 回答
1

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

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

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

    for (char ch : line.toCharArray()) {
        if (ch == '\t') {
            System.err.println("BINGO!!");
        }
    }
于 2012-09-15T23:58:42.667 回答
0

正如充满鳗鱼的气垫船刚才所说,您正在阅读整行内容,而不是逐个字符。

无论如何,您可以通过 if 之类的方式检查它是否是制表符空白字符(String.charAt(pos) == '\t') { do stuff with it }

于 2012-09-15T23:41:27.843 回答