penso di aver trovato il problema:
la stringa "1;2;;" ha lunghezza 2
la stringa ";3;;" ha lunghezza 2
la stringa ";;4;" ha lunghezza 3

e così via, in pratica split non riconosce ;; come un valore ma lo salta di brutto, secondo me si potrebbe tentare di convertire la stringa 1;2;; in "1;2; ; " che ha lunghezza 4