Ответ 1
По умолчанию split
удаляет пустые конечные строки из массива результатов. Чтобы отключить этот механизм, используйте split(regex, limit)
с отрицательным пределом, например
split("\\|",-1)
Немного больше деталей: split(regex)
внутренне возвращает результат split(regex, 0)
и в документации этого метода вы можете найти (выделение мое)
Параметр
limit
управляет количеством применений шаблона и, следовательно, влияет на длину результирующего массива.Если предел
n
больше нуля, шаблон будет применен не более n - 1 раз, длина массива будет не больше n, а последний элемент массива будет содержать все входные данные за пределами последнего согласованного разделителя,Если
n
неположительный, тогда шаблон будет применяться как можно дольше, и массив может иметь любую длину.Если
n
ноль, тогда шаблон будет применяться как можно дольше, массив может иметь любую длину, а завершающие пустые строки будут отброшены.