在android中拆分文本文件

时间:2012-12-17 15:21:14

标签: java android

我正在开发一个Android应用程序,我需要它来阅读文本文件。一旦它读取了文本文件,我需要save certain parts到数据库。 该文本文件包含以下内容:

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 个答案:

答案 0 :(得分:2)

因此,如果我理解您的问题,那么您会寻找在换行符处分割文本的内容。因此,您可以获取两个信息字段并将它们放入文本视图中。

看看这篇文章: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]

我相信你能找到更好的正则表达式,但我不是专家;)

答案 2 :(得分: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文件中,那么我的方式就像评论中的其他建议一样