Ответ 1
Вы можете указать, чтобы применить шаблон как можно чаще:
String[] de = data.split(";", -1);
См. Javadoc для метода split, который содержит два аргумента для деталей.
Ознакомьтесь с приведенной ниже программой.
try {
for (String data : Files.readAllLines(Paths.get("D:/sample.txt"))){
String[] de = data.split(";");
System.out.println("Length = " + de.length);
}
} catch (IOException e) {
e.printStackTrace();
}
Sample.txt:
1;2;3;4 A;B;; a;b;c;
Вывод:
Length = 4 Length = 2 Length = 3
Почему второй и третий выходы дают 2 и 3 вместо 4. В файле sample.txt
условие для 2-й и 3-й строк должно давать новую строку (\n
или вводить) сразу после предоставления разделителя для третьего поля. Может ли кто-нибудь помочь мне получить длину как 4 для 2-й и 3-й строк без изменения состояния файла sample.txt
и как распечатать значения de[2]
(throws ArrayIndexOutOfBoundsException
)?
Вы можете указать, чтобы применить шаблон как можно чаще:
String[] de = data.split(";", -1);
См. Javadoc для метода split, который содержит два аргумента для деталей.
посмотрите docs, здесь важная цитата:
[...] the array can have any length, and trailing empty strings will be discarded.
Если вам это не нравится, взгляните на комментарий Фабиана. При вызове String.split(String)
он вызывает String.split(String, 0)
и отбрасывает завершающие пустые строки (как говорят документы), при вызове String.split(String, n)
с n < 0
он ничего не отбрасывает.