JAVA - 分割字符串,带有2个分隔符

时间:2014-11-14 23:48:26

标签: java regex string substring

我有一个这样的文本文件:

fname, lname~email~info
fname, lname~email~info
fname, lname~email~info
fname, lname~~info

我需要将这些字符串拆分为1或2D数组。我使用过这段代码:

  public void readFile() throws IOException {   
    BufferedReader br = new BufferedReader(new FileReader("contacts.txt"));
    try {
        StringBuilder sb = new StringBuilder();
        String line = br.readLine();

        while (line != null) {
            sb.append(line);
            sb.append(System.lineSeparator());
            line = br.readLine();
        }
        String everything = sb.toString();
        // store data into array
        for (String retval: everything.split("~")){
          System.out.println(retval);
        }

        // store data into array
        //String[] retval = everything.split("~");
        //System.out.println(retval[2]);


    } finally {
        br.close();
    }
  }

但问题是读者没有拆分新行,最后它给了我一个字符串

info
fname, lname

作为字符串(是的空格)

如何在分裂的一步中实现这一目标?请注意,文本文件的最后一行没有电子邮件部分,因此拆分应存储空字符串,而不是跳过它。

感谢

2 个答案:

答案 0 :(得分:1)

您可以将其更改为

 everything.split("~|[\r\n]+");

编辑:

for (String retval: everything.split("~")){
    if(retval !=null && !retail.isEmpty) {
       System.out.println(retval);
    } else {
       System.out.Println("String is empty or null");
    }
}

答案 1 :(得分:1)

我想说你希望拆分~和新行序列。以下内容适合您。

everything.split("~|[\r\n]+");