BufferedReader и 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