请有人帮我解析java字符串中的整数值和arithematic运算符。
例如:
String rule = "itemCount < 10 and itemCount >= 20";
从我需要检索的规则字符串<, 10, >= and 20
,然后将显示在jsp中。
答案 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();