I am trying to split a string into 29 tokens….. stringtokenizer won’t return null tokens. I tried string.split, but I believe I am doing something wrong:
String [] strings = line.split(",", 29);
sample inputs:
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,,,,
If you want the trailing empty strings to be kept, but you don’t want to give a magic number for maximum, use a negative limit:
If
line.equals("a,,c"), thenline.split(",", -1)[1].isEmpty(); it’s notnull. This is because when","is the delimiter, then",,"has an empty string between the two delimiters, notnull.Example:
Using the explanation above, consider the following example:
",,"Although you might expect
",",null, and",".The actual result is
",",""and","If you want
nullinstead of empty strings in the array returned bysplit, then you’d have to manually scan the array and replace them withnull. I’m not sure whys == nullis better thans.isEmpty(), though.See also
String.indexOfand empty strings