我正在使用此代码从文件中读取一行文本:
BufferedReader br = new BufferedReader(new FileReader("myFile.txt"));
String line = br.readLine();
如果该行包含制表符 : (\t) 则该字符未被正确读取。它只是显示为一个空白空间。如何确定当前正在读取的文本行中是否包含制表符?
我正在使用此代码从文件中读取一行文本:
BufferedReader br = new BufferedReader(new FileReader("myFile.txt"));
String line = br.readLine();
如果该行包含制表符 : (\t) 则该字符未被正确读取。它只是显示为一个空白空间。如何确定当前正在读取的文本行中是否包含制表符?
如果您确定它是一个空格,通过打印出字符串,那么您将看到您正在使用的终端对制表符的解释。大多数终端驱动程序认为制表符(ASCII 9)表示“跳转到 8 的倍数的列”,以模拟旧打字机的行为。
考虑查看charAt(...)
字符串中的每个字符并改为查找值 9。
文本文件包含 \t 字符,但是当我输出读取字符串中的字符时,它显示为空,即未读取 \t。
我的第一反应是,这是显示输出的任何原因的错。尝试将输出重定向到文件并使用您知道将显示任何 TAB 字符(如果存在)的工具查看它。(例如,od
如果您使用的是 UNIX / Linux,则使用该实用程序。)并检查输入文件。
如何确定当前正在读取的文本行中是否包含制表符?
for (char ch : line.toCharArray()) {
if (ch == '\t') {
System.err.println("BINGO!!");
}
}
正如充满鳗鱼的气垫船刚才所说,您正在阅读整行内容,而不是逐个字符。
无论如何,您可以通过 if 之类的方式检查它是否是制表符空白字符(String.charAt(pos) == '\t') { do stuff with it }