2014-11-14 126 views
1

我有一个文本文件是这样的:JAVA - 分裂字符串2定界符

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 

为字符串(Yes(是)空格)

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

感谢

回答

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

谢谢,但这会分裂FNAME和LNAME之间的空间,我需要“FNAME,LNAME”是一个字符串 – Casper 2014-11-14 23:55:58

+0

的标准是什么分裂?只是〜?如果是这样,那么拿出'| \ s +'部分,你就会很好。 – ash 2014-11-15 00:01:21

+0

@Herious你的问题又是什么?你想如何分割字符串?您想做什么 ? – StackFlowed 2014-11-15 00:03:25

1

我会说你正在寻找拆就~和换行符序列。以下内容应该适合你。

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