BufferedReader 和 Scanner 的 nextLine() 似乎通过删除所有尾随空格提供了太多帮助。我需要保留列,目前允许为空值,但犹豫使用 next() 或 getBytes() 标识制表符遍历每一行,因为可能有数百万行和数百列。
我在阅读行时缺少这两种方法的替代方法吗?在这些方法中是否设置了标志或任何其他选项来保留空格?我是否只是强制用户使用非空白字段?我不是唯一一个试图保留空白的人吗?
当它从文件中读取时,我遇到了问题。我有这个代码
import java.lang.*;
import java.util.*;
import java.io.*;
public class stringTest
{
public static void main (String[] args) throws IOException
{
BufferedReader br = new BufferedReader(new FileReader("wtf.txt"));
String l = br.readLine();
while (l != null) {
System.out.println(l.split("\t").length);
l = br.readLine();
}
}
}
wtf.txt 包含
h\tu\tr\tf\n
o\tm\tg\t\t\n
输出是
4
3
此外,如果我在所有选项卡的任何位置添加一行,即
h\tu\tr\tf\n
\t\t\t\t\t\n
o\tm\tg\t\t\n
输出是
4
0
3
我认为拆分不是问题,因为如果我使用代码
String s = "w\tt\tf\t\t\n";
System.out.println(""+s.split("\t").length);
String s1 = "w\tt\tf\tx\n";
System.out.println(""+s1.split("\t").length);
String s2 = "\t\t\t\t\t\t\n";
System.out.println(""+s2.split("\t").length);
输出是
5
4
6