Синтаксический анализ метода Java - PullRequest
0 голосов
/ 10 января 2019

Я хочу разобрать Аргументы метода Java (параметры)
(Например, у меня есть строка)

"leftPad(abc,[1,2,3],xyz)"

Я хочу разделить и вернуть 3 значения в массиве

[abc,[1,2,3],xyz]

есть идеи как это сделать?
возможно ли иметь регулярное выражение для этого?
есть ли в наличии библиотека?

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Это очень зависит от ваших требований.

I want to parse the Java Method Arguments (parameters)
(E.g I have a String )

Ваш пример строки похож на супер просто синтаксис Java.

Но параметры java-метода могут быть любыми: от простого литерала до создания анонимного внутреннего класса!

Другими словами: если у вас действительно ограниченный набор возможных «входных данных» (как в вашем примере), то вы можете использовать другой ответ и выполнить анализ «низкого уровня» вручную. Но если вы рассматриваете возможность работы со «всевозможными» возможными параметрами, то вы просто говорите по всей ширине языка программирования Java. И тогда вам лучше воспользоваться инструментом вроде JavaParser .

0 голосов
/ 10 января 2019

Похоже, здесь будет работать простая итерация

String str = "abc,[1,2,3],xyz,[1,2,3,4]";
    ArrayList<String> parts = new ArrayList<String>(); String tmp = "";
    for (int i = 0; i < str.length(); ++i) {
        if (str.charAt(i) == '[') {
            tmp = str.substring(i, str.indexOf("]", i+1) + 1);
            i = str.indexOf("]", i+1);
        } else if (str.charAt(i) == ',') {
            parts.add(tmp);
            tmp = "";
        } else {
            tmp = tmp + str.charAt(i);
        }
    }
    if (!tmp.equals("")) parts.add(tmp);
    System.out.println(parts);

Надеюсь, это поможет

...