Как получить указанное c значение запроса из строки? - PullRequest
0 голосов
/ 20 февраля 2020

Я бы хотел получить myInfo значение из приведенной ниже строки test:

public class Test {
    public static void main(String[] args) {

        String test = "{q=code=in=(100,110,120,100);product=in=(393,393);ID==33323323, myInfo==test, offset=0, limit=200}";
    }
}

Ожидаемый результат:

test

Как разбить и получить нужное значение?

1 Ответ

0 голосов
/ 20 февраля 2020

Одним из возможных решений этой задачи будет использование Шаблон класса .

Вот пример кода:

public class RegexDemo {
    public static void main(String[] args) {
        String test = "{q=code=in=(100,110,120,100);product=in=(393,393);ID==33323323, myInfo==test, offset=0, limit=200}";

        printMyInfoValue(test);
    }

    private static void printMyInfoValue(String test) {
        Pattern pattern = Pattern.compile("\\s+myInfo==(\\w+)");
        Matcher matcher = pattern.matcher(test);

        if (matcher.find()) {
            System.out.printf("My Info value: %s\n", matcher.group(1).trim());
        }
    }
}

Вывод:

test

В регулярном выражении мы проверяем, если myInfo представлен в тексте. Если да, просто сгруппируйте результаты с круглыми скобками ().
Для группы с индексом 0 group(0) у нас будет полное значение регулярного выражения:

myInfo == test

Для 1 группы group(1) только значение:

test

Это именно то, что мы ищем.
Если ключ myInfo не представлен для ввода text -> нет результата печати.

...