Как извлечь подстроку из текстового файла в Android? - PullRequest
1 голос
/ 07 декабря 2010

Я хочу знать, как мне сделать, чтобы извлечь подстроку из текстового файла в Android:

текстовый файл, как показано ниже:

[start_delimeter]

0|1|text1

0|1|text2

0|1|text3

0|1|text4

[end_delimiter]

Я хочу извлечь строкимежду start_delimeter и end_delimiter.

Как я могу сделать это на языке Java / Android Android *

Ответы [ 4 ]

3 голосов
/ 07 декабря 2010

Последовательность:

  • Сначала необходимо поместить текстовый файл в каталог ресурсов (например, filename.txt)
  • Читать файл (используя BufferedReader) до тех пор, пока вычитать начальный разделитель
  • Читать каждую строку из файла и обрабатывать ее, используя Pattern и Matcher, пока не будет найден конечный разделитель (или с 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 голос
/ 07 декабря 2010

Я хочу извлечь строки между start_delimeter и end_delimiter.

Как я могу это сделать на языке Java / Android Android ??

Читать файл строка за строкой в ​​строку,тогда

str.subString(startIndex,endIndex);
0 голосов
/ 07 декабря 2010

Используйте 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
}
0 голосов
/ 07 декабря 2010

Проще говоря, я бы прочитал файл построчно с помощью BufferedReader. Как только начальный разделитель найден, оцените каждую последующую строку, чтобы узнать, является ли это конечным разделителем Если это не разделитель, напишите строку в коллекцию. По достижении конечного разделителя прекратите чтение и закройте устройство чтения.

BufferedReader пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...