我有下一个代码:
String test = "A,B,,,,,";
String[] result = test.split(",");
for(String s : result){
System.out.println("$"+s+"$");
}
输出结果为:
$ A $
$ B $
和我的预期:
$ A $
$ B $
$$
$$
$$
$$
$$
但是,我修改了代码如下:
String test = "A,B,,,,,C";
String[] result = test.split(",");
for(String s : result){
System.out.println("$"+s+"$");
}
结果是:
$ A $
$ B $
$$
$$
$$
$$
$ C $
其他变体:
String test = "A,B,,,C,,";
String[] result = test.split(",");
for(String s : result){
System.out.println("$"+s+"$");
}
结果:
$ A $
$ B $
$$
$$
$ C $
任何想法?
我需要将csv文件转换为java对象,但是当他们不向我发送最后一列时代码无法正常工作
答案 0 :(得分:2)
来自docs:
此方法的工作方式就像调用带有给定表达式和limit参数为零的双参数split方法一样。 结尾的空字符串因此不包含在结果数组中。
答案 1 :(得分:1)
我现在做了这个代码,它对我来说很好,试试这个:
String test = "A,B,,,,,";
int i;
int countOfCommas = 0;
int countOfLetters = 0;
String[] testArray = test.split("");
String[] result = test.split(",");
for(i=0;i<=test.length();i++)
if(testArray[i].equals(","))
countOfCommas++;
for(String s : result){
System.out.println("$"+s+"$");
}
if(test.length() > result.length)
countOfLetters = test.length()-countOfCommas;
for(i=0;i<(test.length()-countOfLetters)-result.length;i++)
System.out.println("$$");
答案 2 :(得分:0)
正如Jeroen Vannevel所说,这是String.split()
的记录行为。如果你需要kepp所有空字符串,只需使用test.split(",",-1)
答案 3 :(得分:0)
我有@ZouZou的解决方案,是下一个:
String test = "A,B,,,C,,";
String[] result = test.split(",",test.length()); // or the number of elements you expect in the result
for(String s : result){
System.out.println("$"+s+"$");
}