在Java中拆分字符串与空元素

我正在逐行读取.csv文件。 一行可以看例如下: String str = "10,1,,,,"

现在我想根据“,”拆分: String[] splitted = str.split(","); 现在的问题是,这只会产生2个元素,但我希望有5个元素,前两个元素应该包含10和1,另外3个应该只是一个空字符串。

另一个例子是String str = "0,,,,," ,它只产生一个元素,但我希望有5个元素。

最后一个例子是String str = "9,,,1,,"它给出了2个元素(9和1),但我希望有5个元素。 第一个元素应为9,第四个元素应为1,所有其他元素应为空字符串。

如何才能做到这一点?

你需要使用-1参数

 String[] splitted = str.split(",", -1); 

这已在前面讨论过,例如Java:String split():我希望它在末尾包含空字符串

但是split真的不应该是解析csv的方式,当你有一个包含逗号的String值时,你可能会遇到问题

 23,"test,test","123.88" 

split会将行分成4部分:

 [23, "test, test", "123.88"] 

我不认为你想要那个。

默认情况下,split仅删除尾随的分隔符。 你可以关闭它

 String str = "9,,,1,,"; String[] parts = str.split(",", -1); System.out.println(Arrays.toString(parts)); 

版画

 [9, , , 1, , ] 

传递-1 (或任何负数,实际上)作为要拆分的第二个参数:

 System.out.println("0,,,,,".split(",", -1).length); // Prints 6.