Я пытаюсь разделить строку на 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,,,,
Если вы хотите сохранить завершающие пустые строки, но не хотите указывать магическое число для максимума, используйте отрицательный предел:
line.split(",", -1)
Если line.equals ("a ,, c")
, то line.split (",", -1) [1] .isEmpty ()
; это не ноль
. Это потому, что, когда ","
является разделителем, тогда ",,"
имеет пустую строку между двумя разделителями, а не null
. {{1} }
Используя объяснение выше, рассмотрим следующий пример: ",,"
Хотя вы можете ожидать ","
, null
, и ","
.
Фактический результат: ","
, ""
и ","
null
вместо пустых строк в массиве, возвращаемом split
, тогда вам придется вручную сканировать массив и заменить их на null
. Я не уверен, почему s == null
лучше, чем s.isEmpty()
.