Предположим, у вас есть текстовый файл, содержащий три столбца, с данными в каждом столбце.Иногда столбцы разделяются пробелами, а иногда они разделяются табуляцией, например:
С пробелами:
1 250 643
2 446 116
3 199 292
4 801 171
С вкладками:
1 352500 371500
2 381500 374500
3 304000 384500
4 431000 394000
5 355000 404000
Предположим,последние два столбца содержат координаты x и y, и они сохраняются в некотором массиве объектов местоположения Location locations[]
, где Location
имеет некоторый конструктор, такой как public Location(double x, double y)
.Поэтому мы анализируем эти координаты и сохраняем их в массиве Location следующим образом:
Scanner s = new Scanner("someFile.txt");
Location locations = new Location[numberOfRowsInFile];
int i = 0;
while(i < numerOfRowsInFile) {
String line = s.nextLine();
String[] coordinate = line.split("\t");
locations[i++] = new Location(Double.parseDouble(coordinate[1]),Double.parseDouble(coordinate[2])); //Parse coordinates
}
Теперь вот моя проблема.В строке String[] coordinate = line.split("\t");
это работает для текстовых файлов, когда столбцы разделены пробелами, но не когда столбцы разделены пробелами.В этом случае мне потребуется String[] coordinate = line.split(" ");
.
Как я могу проверить, какой разделитель действителен?Как то так:
if (line.validSplit() == "\t")
String[] coordinate = line.split("\t");
else if (line.validSplit() == " ")
String[] coordinate = line.split(" ");