Возникает типичная проблема при работе с методом split()
в Java. Данный метод используется для разделения строки на подстроки, используя указанный разделитель. Однако, когда встречается два разделителя подряд, между которыми нет символов, ожидается, что метод вернет пустую строку. Но на практике это не всегда происходит.
Рассмотрим пример:
String data = "5,6,7,,8,9,,"; String[] split = data.split(","); System.out.println(split.length);
В этом примере разделителем является запятая. Ожидается, что строка будет разделена на 8 подстрок: [5,6,7,EMPTY,8,9,EMPTY,EMPTY]. Однако, если запустить этот код, он выведет значение 6.
Проблема заключается в том, что метод split()
в Java по умолчанию игнорирует пустые строки в конце массива. Это происходит потому, что внутренне split()
использует регулярные выражения, и при разделении строки оставляет пустые строки только в начале и середине массива.
Чтобы исправить это, можно передать второй аргумент в метод split()
. Этот аргумент указывает на количество возвращаемых строк. Если передать отрицательное число, метод вернет все строки, включая пустые.
Итак, исправленный код будет выглядеть так:
String data = "5,6,7,,8,9,,"; String[] split = data.split(",", -1); System.out.println(split.length);
Теперь выводом этого кода будет число 8, которое соответствует ожидаемому количеству подстрок, включая пустые.
Добавить комментарий