Как разделить строку из одного указанного c слова в строке в другое указанное c слово в той же строке в java? - PullRequest
0 голосов
/ 24 февраля 2020

Итак, строка, с которой я работаю, - это вопрос API -> https://opentdb.com/api.php?amount=10

Проблема в том, что вопрос содержит символ "," (тогда он будет разделен мои строковые переменные неверны)

Мой тестовый код:

public static void main(String[] args) throws Exception {
    String json = readUrl("https://opentdb.com/api.php?amount=10");
    Gson gson = new Gson();
    Quiz quiz = gson.fromJson(json, Quiz.class);

    String string = quiz.results.iterator().next().toString();
    String[] parts = string.split(",");

    // Category
    String part1 = parts[0];
    part1 = part1.replace("{category=", "");
    // Type
    String part2 = parts[1];
    part2 = part2.replace("type=", "");
    //Difficulty
    String part3 = parts[2];
    part3 = part3.replace("difficulty=", "");
    //Question
    String part4 = parts[3];
    part4 = part4.replace("question=", "");
    //Correct answers
    String part5 = parts[4];
    part5 = part5.replace("correct_answer=", "");
    //Incorrect answers
    String part6 = parts[5];
    part6 = part6.replace("incorrect_answers=[", "");
    //Output
    System.out.println("Category: " +        part1);
    System.out.println("Type: "    +         part2);
    System.out.println("Difficulty: " +      part3);
    System.out.println("Question: " +        part4);
    System.out.println("Correct answers: " + part5);
    System.out.println("Incorrect answers " +part6);

Есть хорошие идеи для решения этой проблемы? Есть ли хороший способ разделить слова в строке из API-URL от одного слова к другому? Пример от слова "question =" к слову "correct_answers =" Так что я могу сохранить строку, которая находится в середине двух слов.

// метод readUrl:

public static String readUrl(String urlString) throws Exception {
    BufferedReader reader = null;
    try {
        URL url = new URL(urlString);
        reader = new BufferedReader(new InputStreamReader(url.openStream()));
        StringBuffer buffer = new StringBuffer();
        int read;
        char[] chars = new char[1024];
        while ((read = reader.read(chars)) != -1)
            buffer.append(chars, 0, read);

        return buffer.toString();
    } finally {
        if (reader != null)
            reader.close();
    }
}

// Класс объекта викторины:

static class Quiz {
    private float response_code;
    ArrayList<Object> results = new ArrayList<Object>();


    // Getter Methods

    public float getResponse_code() {
        return response_code;
    }

    // Setter Methods

    public void setResponse_code(float response_code) {
        this.response_code = response_code;
    }
}
...