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