2013-09-28 4 views
1

Я немного запуталсяКак правильно разбить строку в Java

public static void main(String [] args){ 
     String s = "a,b,c,d,"; 

     System.out.println(s.split(",").length); 
    } 

Я ожидал увидеть 5 как выход .. но выход 4? Почему он игнорирует последнее поле «null»

Как обработать этот случай, если я пытаюсь разобрать данные, которые имеют (скажем) 5 столбцов.

cases: 
a,b,c,d,e 
a,,c,d,e //this case is fine as this still has 5 fields.. one of the field is missing.. but thats ok 
a,b,c,d //simple length check with header catches this error 
a,b,c,d,e,f //simple length check 
a,b,c,d,e,// looks like there are 6 fields.. but unable to catch such error by length check 
+0

Строка 'null' отличается от пустой (" ") строки. – Prateek

ответ

8

String#split() метод игнорирует любую завершающую пустую строку. Таким образом, они не являются частью массива. Если вы хотите, чтобы они были частью массива, используйте перегруженный метод split(String, int), который принимает ограничение как 2-й аргумент. Если вы передадите отрицательное значение для лимита, конечные пустые строки не будут игнорироваться.

System.out.println(s.split(",", -1).length); 

А также, пустая строка не null.

+0

А также пустая строка не 'null'. Спасибо, что добавил. – Prateek

Смежные вопросы