Этот метод работает, как будто вызывая двухпараметрический метод разделения заданное выражение и предельный аргумент от нуля.
Для разделения с предельным аргументом, он говорит:
Если n не является положительным, то образец будет применяться столько раз, сколько возможен, и массив может иметь любой длина. Если n равно нулю, то деталь будет применяться столько раз, сколько возможно, массив может иметь любой длина и волочащиеся пустые строки будет выброшено.
Итак, попробуйте вызвать метод split с не-положительным предельным аргументом, например:
String[] pieces = s.split(":", -1);