如何解析字符串中的某些标记?

时间:2011-12-26 15:19:10

标签: java string

请有人帮我解析java字符串中的整数值和arithematic运算符。

例如:

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

从我需要检索的规则字符串<, 10, >= and 20,然后将显示在jsp中。

2 个答案:

答案 0 :(得分:1)

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 的值

答案 1 :(得分:1)

正则表达式对您有帮助吗? 也许是这样的:

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

(可以肯定进行优化)

将此表达式与您的字符串匹配时,您应该获得包含以下内容的7个组:

1:itemCount

2:&lt;

3:10

4:和

5:itemCount

6:&gt; =

7:20

有关详细信息,请参阅Pattern Class documentation

但总的来说,我不确定这是不是你想做的事。

也许最好切换到更抽象的方式来定义表达式,而不是将其写入字符串。

这样的事情:

Rule rule = Rule.AND(
  Rule.SMALLER(itemCount, 10),
  Rule.GREATER_OR_EQUAL(itemCount, 20)
);
boolean result = rule.getResult();