Java StringTokenizer, пустые пустые маркеры

Я пытаюсь разделить строку на 29 маркеров..... stringtokenizer, не возвратит пустые маркеры. Я попробовал string.split, но я полагаю, что делаю что-то не так:

String [] strings = line.split(",", 29);

демонстрационные исходные данные:

10150,15:58,23:58,16:00,00:00,15:55,23:55,15:58,00:01,16:03,23:58,,,,,16:00,23:22,15:54,00:03,15:59,23:56,16:05,23:59,15:55,00:01,,,,
10155,,,,,,,,,,,07:30,13:27,07:25,13:45,,,,,,,,,,,07:13,14:37,08:01,15:23
10160,10:00,16:02,09:55,16:03,10:06,15:58,09:48,16:07,09:55,16:00,,,,,09:49,15:38,10:02,16:04,10:00,16:00,09:58,16:01,09:57,15:58,,,,
10
задан user69514 25 April 2010 в 14:43
поделиться

1 ответ

Если вы хотите сохранить завершающие пустые строки, но не хотите указывать магическое число для максимума, используйте отрицательный предел:

line.split(",", -1)

Если line.equals ("a ,, c") , то line.split (",", -1) [1] .isEmpty () ; это не ноль . Это потому, что, когда "," является разделителем, тогда ",," имеет пустую строку между двумя разделителями, а не null . {{1} }


Пример:

Используя объяснение выше, рассмотрим следующий пример: ",,"

Хотя вы можете ожидать "," , null , и "," .

Фактический результат: "," , "" и ","


Если вы хотите null вместо пустых строк в массиве, возвращаемом split, тогда вам придется вручную сканировать массив и заменить их на null. Я не уверен, почему s == null лучше, чем s.isEmpty().

См. Также

16
ответ дан 3 December 2019 в 17:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: