如何从android应用中的txt文件中获取行的一部分

问题描述 投票:0回答:1

我有一个.txt文件,我设法创建了可以读取该txt文件并将其文本转换为字符串的应用程序,

File dir = Environment.getExternalStorageDirectory();

        // i have kept text.txt in the sd-card

        if(file.exists())   // check if file exist
        {
            //Read text from file
            StringBuilder textt = new StringBuilder();

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

                while ((line = br.readLine()) != null) {

                    if(line.startsWith("[A]")){
                        textt.append(line);
                        textt.append('n');

                }
            }
            catch (IOException e) {

            }
            //Set the text
            text.setText(textt);
        }
        else
        {
            text.setText("Sorry file doesn't exist!!");
        }

我的txt文件是

What is the biggest county in the world.......
[A]China.     [B]Usa.         [C]Russia.   [D]France

What is the tallest river in the world.........
[A]Nile.     [B]Mesesbie.         [C]khan.   [D]Red river

.........

您可以看到,我的文本文件包含一些问题和每个问题的四个答案,我想让我的应用程序在arrylist中得到这些问题,而[A]在arrylist中得到这些答案,而 [B]数组列表中的答案(与C和D相同)。

public ArrayList<String> Questions=new ArrayList<>();                               
    public ArrayList<String> answerA=new ArrayList<>();
    public ArrayList<String> answerB=new ArrayList<>();
    public ArrayList<String> answerC=new ArrayList<>();
    public ArrayList<String> answerD=new ArrayList<>();

但是我不知道该怎么做,我读了(split)和(substring),并试图得到[A]答案,但是我做不到,因为我的应用程序给了我每一行以[A]开头,我希望[A]的答案不包含[B]或[C]或其他答案,

所以如果有人对我有一个好的解决方案,我将很感激。

java split bufferedreader readline
1个回答
0
投票

不要将readLines组合成一个字符串,而是分别处理每一行。

在这种情况下可能有很多情况:

单行或多行问题

[如果某行不包含这些[A]和[B]以及[C]和[D]中的任何一个,则它是一个问题行以及此条件之后的所有与该条件匹配的行,直到下次出现[A]或[B]或[C]或[D]是问题,应放在问题ArrayList

-单行回答的每个选项

[[A]选项1 [B]选项2 [C]选项3 [D]选项4

如果一行包含所有这些[A]和[B]以及[C]和[D],确定readLine字符串中[A]和[B]以及[C]和[D]的位置,并将部分放置在相应数组中的这些位置之间。

-每行答案的每个选项

[A]选项1

[B] option2

[C] option3

[D] option4

如果仅存在[A]或[B]或[C]或[D]中的一个,而其余部分都不存在,则此条件可以成立。在这种情况下,将此行添加到其对应的ArrayList()

一行中的某些选项,其他行中的其他选项

[[A]选项1 [B]选项2 [C]选项3

[D] option4

我希望你对需要做的事情有想法!

© www.soinside.com 2019 - 2024. All rights reserved.