Получение подстрок с одинаковым началом, но с переменным концом и длиной в строке и добавление их в массив - PullRequest
0 голосов
/ 12 июня 2018

Я ищу способ перехватить все подстроки в огромной строке.Все подстроки начинаются с:

"productName": ",

после кавычки сразу после двоеточия, подстроки имеют явно разные окончания и длину, но ониу всех на самом конце есть цитата, подобная этой:

"productName": "огурец" или "productName": "помидоры"

Я уже пробовал сам, нос моим кодом он остановился сразу после первого совпадения (позже я узнал, что именно это делает indexOf: D), как я могу получить каждую подстроку и добавить ее в ArrayList?

  ArrayList<String> nameList = new ArrayList<>();
        String productName = "\"productName\":\"";
        String tmp = "";
        char endPoint =  '"';
        int lastIndex = unmodifiedSourceCode.indexOf(productName) + 15; 
        for (int i = 0; i < 10; i++) {
            if (unmodifiedSourceCode.charAt(lastIndex + i) != endPoint) {
                tmp += unmodifiedSourceCode.charAt(lastIndex + i);
            }
        }
        nameList.add(tmp);

Iтолько что начал с Java.

РЕДАКТИРОВАТЬ: более длинный образец исходного кода, с которым я работаю

"id": "483303", "nan": "483303", "версия ": 59640," ProductName ":" огурец " "описание": "деталь": / PD1028378 "}}," ID ":" 1028378" , "нан": "1028378", "вариант": 27640,"productName ":" бананы "," описание ":

1 Ответ

0 голосов
/ 12 июня 2018

это исходный код с веб-сайта, похожий на этот "detail": "id": "483303", "nan": "483303", "version": 59640, "productName": "cucumber», "описание": "деталь": / PD1028378 "}}," ID ":" 1028378" , "нан": "1028378", "вариант": 27640, "ProductName": "бананы", "описание":

Класс Java String является мощным классом с множеством служебных методов, таких как indexOf или subString. Название продукта можно извлечь следующим образом:

    ArrayList<String> nameList = new ArrayList<>();
    String[] tmpArray =  unmodifiedSourceCode.split("\"productName\":");
    for(int i=1; i < tmpArray.length; i++) {
        nameList.add(tmpArray[i].substring(1, tmpArray[i].indexOf("\"", 1)));
    }
...