JAVA - 用 2 个分隔符分割字符串

标签 java regex string substring

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

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

我需要将这些字符串拆分为一维或二维数组。我用过这段代码:

  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

作为字符串(是的,带有空格)

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

谢谢

最佳答案

您可以将其更改为

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

关于JAVA - 用 2 个分隔符分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26940731/

相关文章:

php - 用于在 "-"之后选择值的正则表达式

python - Pandas : Replace string column values

java - 如何处理 StaleElementReferenceException

python - 用于在 Python 中匹配 URL 的正则表达式

java - 节点上未调用 MouseDragRelease

javascript - 使用正则表达式分解字符串

html - 段落延续效果,比如末尾三个点之类的

C - 不打印出整个字符串

java - 带有 IndexOutOfBoundsException 的递归

java - Java 中的二维数组返回 null 结果