Случай 1
String a = " ";
String[] b = a.split(",");
System.out.println(b.length);
Печать 1. Почему?
Случай 2
String a = ",,,,,,,,,,,,";
String[] b = a.split(",");
System.out.println(b.length);
Печать 0. Почему?
Честно, я в замешательстве здесь
Это поведение упоминается в документации для String.split :
Этот метод работает так, как если бы он вызывал метод разделения с двумя аргументами с заданным выражением и нулевым предельным аргументом. Таким образом, завершающие пустые строки не включаются в результирующий массив .
Ваш первый пример должен дать массив, содержащий единственную строку, содержащую пробелы. Строка, содержащая пробелы, не является пустой, поэтому она включается в результат.
Ваш второй пример даст массив, содержащий множество пустых строк, но они не включены в результирующий массив, как указано в документации.
Что касается того, почему разработчики Java решили, что удаление завершающих пустых строк, когда limit
равен нулю, это хорошая идея - я не знаю. Большинство других языков / платформ программирования этого не делают.Я считаю, что это "ошибка" - функция, которая работает не совсем так, как ожидает большинство людей.
В SQL Server 2005 имя моей базы данных:a имя таблицы:a имя столбца:a(varchar(max)),b(int) значения
a b
hello|howdoudo|imfine|thanks 1
h|ho|ine|ths 2
helddlo|howdddoudo|imfiddne|tdhs 3
подскажите, какая хранимая процедура split для получения таблицы выглядит следующим образом, т.е. когда b=1 b=2 b=3
вывести вывести вывести вывести вывести
a a a
здравствуйте h holddlo
howdoudo ho howdddoudo
имфайн инэ имфидднэ
спасибо tdhs
В примере 1 есть один элемент в массиве b " " - ваши пробелы
В примере 2 пустые записи удаляются