2012-12-17 59 views
-1

我正在開發一個android應用程序,我需要它來讀取文本文件。一旦它讀取了我需要的文本文件save certain parts到數據庫。 文本文件包含以下內容:在Android中拆分文本文件

Title - Hello 
Date - 03/02/1982 
Info - Information blablabla 

Title - New title 
Date - 04/05/1993 
Info - New Info 

我想我需要使用空白行作爲separator文本文件分爲兩部分。然後,我需要獲取像Title這樣的個人信息並將其作爲標題保存到數據庫中。有沒有辦法做到這一點?我知道如何閱讀所有的文本文件。我正在使用它來讀取complete文本文件。

TextView helloTxt = (TextView) findViewById(R.id.hellotxt); 
    helloTxt.setText(readTxt()); 

} 

private String readTxt() { 

    InputStream inputStream = getResources().openRawResource(R.raw.hello); 

    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 

    int i; 
    try { 
     i = inputStream.read(); 
     while (i != -1) { 
      byteArrayOutputStream.write(i); 
      i = inputStream.read(); 
     } 
     inputStream.close(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    return byteArrayOutputStream.toString(); 
} 

我只是想知道這個分裂事件。 謝謝

+3

爲什麼不使用XML文件? – user1810737

+0

這是我正在和朋友一起工作的一個項目,我們正在使用txt文件 –

+2

但是你明白user1810737試圖告訴你什麼?您可以使用xml文件創建更多結構,並且有足夠的庫可用於讀取這些xml文件並分配變量,如:標題,日期和信息。 –

回答

2

所以,如果我理解你的問題的權利,你尋求的東西,在新行分裂你的文字。因此,您可以將這兩個信息字段放入一個textview中。

看這篇文章:Split Java String by New Line 這將告訴你如何分行文本。

如果你想不空行文本分割使用:

String.split("[\\r\\n]+") 

這也派其他用戶在同一個線程描述。

古德勒克,
丹尼爾

+1

我一個月都沒有找到這個!非常感謝! –

0

您可以使用正則表達式用Pattern和Matcher:

String inputString = "Title - Hello\n" // 
     + "Date - 03/02/1982\n" // 
     + "Info - Information blablabla\n" // 
     + "Title - New title\n" // 
     + "Date - 04/05/1993\n" // 
     + "Info - New Info\n"; 

    Pattern myPattern = Pattern.compile("Title - (.*)\nDate - (.*)\nInfo - (.*)"); 
    Matcher m = myPattern.matcher(inputString); 
    String title = ""; 
    String date = ""; 
    String info = ""; 

    while (m.find()) { 
     title = m.group(1); 
     date = m.group(2); 
     info = m.group(3); 
     System.out.println("Title : [" + title + "] Date : [" + date + "] Info : [" + info + "]"); 
    } 

此代碼返回:

Title : [Hello] Date : [03/02/1982] Info : [Information blablabla] 
Title : [New title] Date : [04/05/1993] Info : [New Info] 

我敢肯定,你可以找到更好的正則表達式,但我不是專家;)

+0

最好使用正則表達式imho,如果事情會出錯,這種模式可能會很危險 – deadfish

0

嘗試爲使用Pattern.compile

File sdcard = Environment.getExternalStorageDirectory(); 

    //Get the text file 
    File file = new File(sdcard,"myaddress.txt"); 

    //Read text from file 
    StringBuilder text = new StringBuilder(); 

    try { 
     BufferedReader br = new BufferedReader(new FileReader(file)); 
     String line; 

     while ((line = br.readLine()) != null) { 
      text.append(line); 
      text.append("####"); 
     } 
    } 
    catch (IOException e) { 
     //You'll need to add proper error handling here 
    } 
System.out.println("text text text ====:: "+text.toString()); 

String your_string = text.toString(); 

Pattern pattern = Pattern.compile("####"); 
String[] strarray =pattern.split(your_string); 

注:

這是工作在我結束我測試。如果你有一個像存儲中的任何更好的解決您的JSON或XML文件中的數據是我最好方式如同其他建議在評論中