2014-11-14 110 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]+");