【问题标题】:Parse plain text and generate a csv in android解析纯文本并在android中生成一个csv
【发布时间】:2026-01-26 13:15:02
【问题描述】:

在我的 Android 项目中,我从如下所示的编辑文本字段中输入了纯文本,

1. Who is superhero?
a) Spiderman
b) Batman
c) Ironman

&等,多问多答;需要解析这个纯文本和每个值,即;问题,每个单独的答案选择都需要更新到 csv 文件的单独行单元格中,如下所示,

任何有关如何实现此目的的帮助或意见将不胜感激。

【问题讨论】:

    标签: java android csv parsing plaintext


    【解决方案1】:

    只需将您的文本分成几行,每 4 行您有一个问题。只需解析每一行并通过用逗号分隔值来制作一个 csv 行

    private String parse(String text) {
        // create the header line
        StringBuilder csv = new StringBuilder("Sl No,Question,Option A,Option B,Option C");
    
        // get every line in an array
        String[] array = text.split("\n");
    
        // for every 4 lines
        for(int i=0; i<array.length; i = i+4) {
            String question = array[i];
            String optionA = array[i+1];
            String optionB = array[i+2];
            String optionC = array[i+3];
            String questionNo = question.substring(0, question.indexOf(".")).trim();
            String questionText = question.substring(question.indexOf(".")+1).trim();
            String optionAText = optionA.substring(optionA.indexOf(" ")).trim();
            String optionBText = optionB.substring(optionB.indexOf(" ")).trim();
            String optionCText = optionC.substring(optionC.indexOf(" ")).trim();
    
            // build the corresponding csv line
            String csvLine = questionNo+","+questionText+","+optionAText+","+optionBText+","+optionCText;
            csv.append("\n");
            csv.append(csvLine);
        }
        return csv.toString();
    }
    

    假设这个输入文本:

        String text =
                "1. Who is superhero?\n" +
                "a) Spiderman\n" +
                "b) Batman\n" +
                "c) Ironman\n" +
                "2. question 2\n" +
                "a) answer 1\n" +
                "b) answer 2\n" +
                "c) answer 3";
        String csv = parse(text);
    

    它返回以下字符串

    Sl No,Question,Option A,Option B,Option C
    1,Who is superhero?,Spiderman,Batman,Ironman
    2,question 2,answer 1,answer 2,answer 3
    

    【讨论】: