Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当最后一个值为空时,如何在java中拆分csv行_Java_Arrays_String - Fatal编程技术网

当最后一个值为空时,如何在java中拆分csv行

当最后一个值为空时,如何在java中拆分csv行,java,arrays,string,Java,Arrays,String,我有逗号分隔的值,如下所示 String s1 = "a, b, c, d, e"; String s2 = "a, , , d, "; String s3 = "a, b, c, d, "; 我需要用“,”分开这个字符串。但是值的数量应该是5。我的意思是最后一个空值应该出现在输出数组中。 有什么解决办法吗。您可以使用拆分方法: String[]S2=S2.split(“,”) 要证明它有效-> System.out.println(S2.length); for (String str :

我有逗号分隔的值,如下所示

String s1 = "a, b, c, d, e";
String s2 = "a, , , d, ";
String s3 = "a, b, c, d, ";
我需要用“,”分开这个字符串。但是值的数量应该是5。我的意思是最后一个空值应该出现在输出数组中。
有什么解决办法吗。

您可以使用拆分方法:

String[]S2=S2.split(“,”)

要证明它有效->

System.out.println(S2.length);
for (String str : S2) {
     if (str.equals(" ")) {
         System.out.println("Space");
     } else {
         System.out.println(str);
}
我使用了String.split(String regex)方法,看到数组有5个元素。我希望这能回答你的问题

package net.javapedia.StringSplitExample;

public class Main {

    public static void main (String[] s) {

        String s1 = "a, b, c, d, e";
        String s2 = "a, , , d, ";
        String s3 = "a, b, c, d, ";
        // This is the String that issue is reported
        String s4 = "a,b,c,d,";
        String s5 = "a,b,c,d,";

        String[] s1Array= s1.split(",");
        String[] s2Array= s2.split(",");
        String[] s3Array= s3.split(",");
        //Below split ignore empty string
        String[] s4Array= s4.split(",");
        //Below split doesn't
        String[] s5Array= s5.split(",",-1);

        System.out.println(s1Array.length);
        System.out.println(s2Array.length);
        System.out.println(s3Array.length);
        //Prints 4
        System.out.println(s4Array.length);
        //Prints 5 :)
        System.out.println(s5Array.length);
    }

}
输出:


您可以使用
String
中的
split
方法,最后一个空值应该出现在它将出现的输出数组中。只要每行有4个逗号,split()就会创建一个包含5项的数组。@forpas
System.out.println(“2,3,4,5,”.split(“,”).length)返回4。从
split(String regex)
的文档中:因此,结果数组中不包括尾随的空字符串。@gblodget OP的字符串都在逗号后包含空格。这就是为什么他会得到5个项目。你实际上不能使用正则表达式来解析CSV。它需要一个解析器。我建议使用Apache Commons one:不确定为什么有人会否决这个答案。它回答了OP发布的具体问题,并提供了有效的证据。如果OP没有一个空格作为最后一个字符串,那就不同了。但在这种情况下并非如此。谢谢你指出这一点。修复后,我可以看到4个字符。我做了一些分析,在堆栈溢出本身中找到了一个很好的参考。用同样的方法更新答案。希望这有帮助。如果没有,请告诉我。谢谢