当我用分号分隔时,拆分函数会忽略最后 2 个值
Split function ignores last 2 values when I separate by semicolon
很简单,我想用分号隔行。但是,在调试时,最后两个值会以某种方式被修剪。
我要拆分的行:::0;;tester@increase.dk;0;::1;;
冒号是值的一部分,请忽略它们。
代码:
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)
而不是:
String[] fields = fileLine.split(";");
使用:
String[] fields = fileLine.split(";", -1);
如方法文档中所述 - "The limit parameter controls the number of times the pattern is applied and therefore affects the length of the resulting array. If the limit n is greater than zero then the pattern will be applied at most n - 1 times, the array's length will be no greater than n, and the array's last entry will contain all input beyond the last matched delimiter. If n is non-positive then the pattern will be applied as many times as possible and the array can have any length. If n is zero then the pattern will be applied as many times as possible, the array can have any length, and trailing empty strings will be discarded. "
或者换句话说 - 使用“-1”使拆分创建的数组包含所有 "values" - 即使它们是空的。
很简单,我想用分号隔行。但是,在调试时,最后两个值会以某种方式被修剪。
我要拆分的行:::0;;tester@increase.dk;0;::1;;
冒号是值的一部分,请忽略它们。
代码:
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)
而不是:
String[] fields = fileLine.split(";");
使用:
String[] fields = fileLine.split(";", -1);
如方法文档中所述 - "The limit parameter controls the number of times the pattern is applied and therefore affects the length of the resulting array. If the limit n is greater than zero then the pattern will be applied at most n - 1 times, the array's length will be no greater than n, and the array's last entry will contain all input beyond the last matched delimiter. If n is non-positive then the pattern will be applied as many times as possible and the array can have any length. If n is zero then the pattern will be applied as many times as possible, the array can have any length, and trailing empty strings will be discarded. "
或者换句话说 - 使用“-1”使拆分创建的数组包含所有 "values" - 即使它们是空的。