split(delimiter)за замовчуванням видаляє трейлінг порожніх рядків з масиву результатів. Щоб вимкнути цей механізм, нам потрібно використовувати перевантажену версію split(delimiter, limit)з limitвстановленим на негативне значення типу
String[] split = data.split("\\|", -1);
Ще трохи подробиць:
split(regex)внутрішньо повертає результат split(regex, 0)та в документації цього методу, який ви можете знайти (наголос мій)
limitПараметр контролює кількість разів застосовується шаблон і , отже , впливає на довжину результуючого масиву.
Якщо межа nстановить більше нуля , то шаблон буде застосований не більше п - 1 раз, довжина масиву буде не більше , ніж п, а останній запис масиву буде містити всі вхідні дані за межами останнього узгодженого роздільник.
Якщо nце не позитивно, шаблон буде застосовуватися якомога більше разів, і масив може мати будь-яку довжину.
Якщо nдорівнює нулю, то шаблон буде застосовуватися якомога більше разів, масив може мати будь-яку довжину, а порожні рядки будуть відкинуті .
Виняток :
Варто згадати, що видалення останнього порожнього рядка має сенс лише в тому випадку, якщо такі порожні рядки створюються розділеним механізмом . Тому, "".split(anything)оскільки ми не можемо розділити ""далі, ми отримаємо як [""]масив результатів .
Це трапляється тому, що розкол тут не відбувся, тому, ""незважаючи на те, що він порожній і трелінг, представляє оригінальну рядок, а не порожню рядок, який був створений процесом розщеплення.