Как разобрать определенные токены из строки? - PullRequest
0 голосов
/ 26 декабря 2011

Может кто-нибудь помочь мне разобрать целочисленные значения и арифметические операторы из строки Java.

Например:

   String rule = "itemCount < 10 and itemCount >= 20";

Из правила String, которое мне нужно получить, <, 10, >= and 20, которыйбудет отображаться в JSP.

Ответы [ 2 ]

1 голос
/ 26 декабря 2011

Вам помогает регулярное выражение?Может быть что-то вроде:

(\w+) (<|<=|==|>|>=) (\w+) (\w+) (\w+) (<|<=|==|>|>=) (\w+)

(можно точно оптимизировать)

При сопоставлении этого выражения с вашей строкой вы должны получить 7 групп со следующим содержимым:

1:itemCount

2: <</p>

3: 10

4: и

5: itemCount

6:> =

7: 20

Подробнее см. В документации Pattern Class .

Но в целом я не уверен, что именно это вы и хотите сделать.

Может быть, лучше перейти к более абстрактному способу определения своего выражения, чем записывать его в строку.

Что-то вроде этого:

Rule rule = Rule.AND(
  Rule.SMALLER(itemCount, 10),
  Rule.GREATER_OR_EQUAL(itemCount, 20)
);
boolean result = rule.getResult();
1 голос
/ 26 декабря 2011
for (int i =0; i < rule.length; ++i) {
    if (rule[i] == "<") {
        // Code for retrieving <
    } else if (rule[i] == ">=") 
        // Code for retrieving >=
    } else {
        tryParse(rule, i);
    }
}

tryParse - это функция, которая будет рекурсивно пытаться выполнить синтаксический анализ целых чисел, пока не будет найдена наибольшая последовательность последовательных цифр, и не обновит значение i

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...