Ответ 1
Alnitak верен, что по умолчанию пустые строки будут отброшены.
Если вы хотите иметь завершающие пустые строки, вы должны использовать split(String, int)
и передать отрицательное число в качестве параметра limit
.
Параметр
limit
управляет количеством раз шаблон применяется и, следовательно, влияет на длину массив. Если предел n больше нуля, то шаблон будет применено не более n - 1 раз, массив длина будет не больше n, а последний элемент массива будет содержать все входные данные за пределами последнего сопоставленного разделителя. Если n не является положительным, тогда шаблон будет применяться столько раз, сколько возможно, и массив может иметь любую длину. Если n равно нулю, тогда шаблон будет применяться столько раз, сколько возможно, массив может имеют любую длину, и конечные пустые строки будут отброшены.
Обратите внимание, что split(aString)
является синонимом split(aString, 0)
:
Этот метод работает, как если бы он вызвал метод с двумя аргументами
split
с данным выражением и предельным аргументом нуля. Поэтому конечные пустые строки не включаются в результирующий массив.
Кроме того, вы должны использовать цикл для получения значений из массива; это позволяет избежать возможного ArrayIndexOutOfBoundsException
.
Итак, ваш исправленный код должен быть (при условии, что вы хотите иметь завершающие пустые строки):
String sample = "::";
String[] splitTime = sample.split(":", -1);
for (int i = 0; i < splitTime.length; i++) {
System.out.println("Value " + i + " : \"" + splitTime[i] + "\"");
}
Вывод:
Value 0 : "" Value 1 : "" Value 2 : ""