Java StringTokenizer,空null标记

use*_*514 10 java string string-split stringtokenizer

我试图将一个字符串分成29个令牌..... stringtokenizer不会返回null令牌.我试过string.split,但我相信我做错了什么:

String [] strings = line.split(",", 29);
Run Code Online (Sandbox Code Playgroud)

样本输入:

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,,,,
Run Code Online (Sandbox Code Playgroud)

pol*_*nts 16

如果您希望保留尾随空字符串,但您不想为最大值提供幻数,请使用负限制:

line.split(",", -1)
Run Code Online (Sandbox Code Playgroud)

如果line.equals("a,,c"),那么line.split(",", -1)[1].isEmpty(); 不是null.这是因为何时","是分隔符,然后",,"在两个分隔符之间有一个空字符串,而不是null.


例:

使用上面的解释,请考虑以下示例: ",,"

也许你会认为",", null",".

实际结果是",", ""","


如果你想要null返回的数组中没有空字符串split,那么你必须手动扫描数组并替换它们null.不过,我不确定为什么s == null会比这更好s.isEmpty().

也可以看看


Tom*_*Tom 5

使用StringUtils.splitPreserveAllTokens()的Apache Commons Lang中