Java'da bir dizgeye split() metodunu uyguladığımız zaman, dizgenin son kısımlarında boş (yani "") dönmesi gereken alanlar kırpılıyor ("trim" uygulanıyor).

Örneğin aşağıdaki gibi bir dizgemiz olsun.
String degerler = "0|0|0|1|||0|1|0|||";
degerler dizgesini boruya (pipe, "|") göre split() ettiğimde karakter dizisi içerisinde geriye "0", "1" yada "" değerleri dönecek.
String[] karakterDizisi = degerler.split("\\|"); 
Yukarıdaki kodu uyguladıktan sonra split() metodu en sondaki "0" rakamından sonraki  "|||" kısmını kırpıyor ve boş değerleri listeye dahil etmiyor.  Bu durumda karakterDizisi'nin uzunluğu 9 dönüyor.

Bu durum String.split(String regex) bağlantısında açıkça belirtilmiş.

Kırpılan alanları da karakter dizisine eklemek istiyorsanız, sınırlama değeri girmelisiniz. Sınırlama değeri  split() metodunun dizgeye kaç defa uygulanacağını belirtir.  split() metodunun kaç defa uygulanacağına dair bir sınır girmek istemiyorsanız eksili bir sayı girmeniz yeterli.

Sınırlama değeri ile kullanmak için sözdizimi şu şekilde: String.split(String regex, int limit)

Örnek olarak;
String[] karakterDizisi = degerler.split("\\|", -1); 

Artık karakterDizisi uzunluğunda bir sınır yok ve boş alanlar da listeye dahil. Yukarıdaki kodu uyguladıktan sonra listenin uzunluk değeri 12 dönüyor.

Kaynak: http://stackoverflow.com/questions/14414582/java-split-string-to-array