我正在逐行读取.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,所有其他元素应为空字符串。
如何做到这一点?
答案 0 :(得分:5)
您需要将其与-1
参数
String[] splitted = str.split(",", -1);
之前已经讨论过,例如, Java: String split(): I want it to include the empty strings at the end
但split
真的不应该解析csv的方式,当你有一个包含逗号的字符串值时,你可能会遇到问题
23,"test,test","123.88"
split
会将行拆分为4个部分:
[23, "test, test", "123.88"]
我不认为你想要那个。
答案 1 :(得分:3)
split仅删除尾随分隔符。您可以使用
关闭此功能String str = "9,,,1,,";
String[] parts = str.split(",", -1);
System.out.println(Arrays.toString(parts));
打印
[9, , , 1, , ]
答案 2 :(得分:3)
将-1
(或任何负数,实际上)作为第二个参数进行分割:
System.out.println("0,,,,,".split(",", -1).length); // Prints 6.