如何从android中的文本文件中提取子字符串?

时间:2010-12-07 18:07:17

标签: java android string

我想知道如何从android中的文本文件中提取子字符串:

文本文件如下所示:

[start_delimeter]

0|1|text1

0|1|text2

0|1|text3

0|1|text4

[end_delimiter]

我想在start_delimeter和end_delimiter之间提取字符串。

我怎样才能在java语言/ android中做到这一点?

4 个答案:

答案 0 :(得分:3)

序列:

  • 首先,您需要将文本文件放在assets目录(ex filename.txt
  • 阅读文件(使用BufferedReader)直到您阅读开始分隔符
  • 从文件中读取每一行并使用PatternMatcher处理它,直到找到结束分隔符(或使用String.split("|")

这是代码:

    // first get the file from the assets
    InputStream is = context.getAssets().open("filename.txt");

    try {
        // start reading (line by line)
        BufferedReader r = new BufferedReader(new InputStreamReader(is));

        // wait for the start delimiter
        String line;
        while ((line = r.readLine()) != null) 
            if (line.equals("[start_delimiter]"))
                break;

        // this is the pattern for the data "int|int|String":
        Pattern p = Pattern.compile("\\|(\\d+)\\|(\\d+)\\|(.+)");

        // read it line by line...
        while ((line = r.readLine()) != null) {
            // ... till the end comes (end delimiter)
            if (line.equals("[end_delimiter]"))
                break; //done

            // if the data matches the pattern...
            Matcher m = p.matcher(line);
            if (m.matches()) {
                // ... handle it!
                int first   = Integer.parseInt(m.group(1));
                int second  = Integer.parseInt(m.group(2));
                String text = m.group(3);

                //...
            }
        }

    } finally {
        is.close();
    }

答案 1 :(得分:1)

  

我想在start_delimeter和end_delimiter之间提取字符串。

     

我怎样才能在java语言/ android中做到这一点?

逐行读取文件到String中。 然后

str.subString(startIndex,endIndex);

答案 2 :(得分:0)

简单地说,我会用BufferedReader逐行读取文件。找到起始分隔符后,评估每个后续行以查看它是否为结束分隔符。如果它不是分隔符,则将字符串写入集合。到达结束分隔符后,停止阅读并关闭阅读器。

BufferedReader example

答案 3 :(得分:0)

使用BufferedReader并逐行阅读文件。

BufferedReader r = ...;
//drop until we hit the delimiter
while (!r.readLine().equals("[start_delimeter]"));
String line;
while (!(line=r.readLine()).equals("[end_delimiter]")) {
    //do something with "line" here
}