2015-02-05 91 views
0

非常简单,我想用分号分隔行。但是,在调试时,最后两个值以某种方式修剪。分割函数忽略最后2个值当我用分号分隔时

线我想分割:::0;;[email protected];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); 

错误:

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

请发表您的代码(没有,截图不计) – SJuan76 2015-02-05 13:30:00

回答

1

相反的:

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

用途:

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

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

或者换句话说 - 使用‘-1’,使得通过分割创建数组包含所有的‘值’ - 即使它们是空

+0

@TJCrowder - 完成了,感谢提醒:-) – 2015-02-05 13:41:59

相关问题