当我用分号分隔时,分割功能忽略最后2个值

时间:2015-02-05 13:26:20

标签: java arrays split

很简单,我想用分号分隔行。但是,在调试时,最后两个值会以某种方式进行修剪。

我要拆分的行:::0;;tester@increase.dk;0;::1;;冒号是值的一部分,忽略它们。

enter image description here

CODE:

BufferedReader br = new BufferedReader(new FileReader("data\\CustomObject69.csv"));
    String fileLine = br.readLine();
    ArrayList<ContactFromExperienceCDO> contacts=new ArrayList<>();
    while (fileLine!=null && fileLine.length()>0){
        fileLine=br.readLine();
        String[] fields = fileLine.split(";");
        String skinIrritations1 = fields[0];
        String EmailAddress1 = fields[2];
        String adhesionIssues1 = fields[4];
        String pouchIssues1 = fields[5];
        ContactFromExperienceCDO contact=new 
        ContactFromExperienceCDO(EmailAddress1, 
        pouchIssues1,skinIrritations1,adhesionIssues1);
        contacts.add(contact);

ERROR:

    Exception in thread "main" java.lang.NullPointerException
    at 
    Consumer.SharedListManipulation. 
    writeContactsToCsv(SharedListManipulation.java:182)
    at Consumer.SharedListManipulation. 
    getContactsFromListLoop(SharedListManipulation.java:163)
    at Consumer.SharedListManipulation. 
    getContactsFromList(SharedListManipulation.java:114)
    at Consumer.Main.main(Main.java:38)

1 个答案:

答案 0 :(得分:1)

而不是:

String[] fields = fileLine.split(";");

使用:

String[] fields = fileLine.split(";", -1);

如方法文档中所述 - &#34; limit参数控制模式的应用次数,因此会影响结果数组的长度。如果限制n大于零,则模式最多应用n - 1次,数组的长度不大于n,并且数组的最后一个条目将包含超出最后匹配的分隔符。 如果n是非正数,则模式将被应用尽可能多次,并且数组可以具有任何长度。如果n为零,那么模式将被应用尽可能多的次数,该数组可以具有任何长度,并且将丢弃尾随的空字符串。 &#34;

或换句话说 - 使用&#34; -1&#34;使得分割创建的数组包含所有&#34;值&#34; - 即使它们是空的。