Java возникают две перегружать функции из String.split(..)
1. public String[] split(String regex, int limit){}
2. public String[] split(String regex) . This equals with split(String regex, int limit = 0)
limit
С параметром сделать String.spit
Явы гибкой. Предельный параметр управляет количеством применений шаблона и, следовательно, влияет на длину результирующего массива. Если предел n больше нуля, шаблон будет применен не более n - 1 раз, длина массива будет не больше n, а последняя запись массива будет содержать все входные данные за пределами последнего сопоставленного разделителя. Если n не является положительным, шаблон будет применяться столько раз, сколько возможно, и массив может иметь любую длину. Если n равно нулю, шаблон будет применяться столько раз, сколько возможно, массив может иметь любую длину, а конечные пустые строки будут отброшены. Подробнее here
Так что в вашем случае с Java:
",,".split(",").length // Return 0
",,".split(",", -1).length // Return 3
Очевидно, это разные языки. Но можно спросить, что на двух языках функция, созданная с той же целью, дает разные результаты. Его можно было бы запросить в stackoverflow, и на него можно было бы ответить. – afzalex
Хотя ваше наблюдение верное, я думаю, что у разработчиков java/javascript нет ни одного приложения, которое может сказать вам «почему». Возможно, они указали это в документации, хотя это, скорее всего, выбор предпочтений. Я голосовал, чтобы закрыть этот вопрос, поскольку это прежде всего мнение. – n247s