2015-02-05 58 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