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 : ""