java - 当我用分号分隔时,拆分函数会忽略最后 2 个值

标签 java arrays split

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

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

enter image description here

代码:

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);

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

或者换句话说 - 使用“-1”使分割创建的数组包含所有“值” - 即使它们为空。

关于java - 当我用分号分隔时,拆分函数会忽略最后 2 个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28345158/

相关文章:

java - 从 Netbeans 7.2.1 升级到 Netbeans 7.3.1 类路径错误

javascript - 检查数组是否包含值

string - Scala中有takeWhile,dropWhile的组合吗?

php - 由各种分隔符分割,同时保留分隔符?

使用带有转义字符的正则表达式分割 Java 字符串

java - javafx 上的模态对话框意外挂起

java - 让 GWT 应用程序与本地客户端进程通信

php - 如何使用数组数据查询以在 PHP 中获取另一个数据

java - 数组洗牌(具有相同的开始值和结束值)

java - Mockito - 验证递归方法