这里的字符串分割使用的默认空格分隔,使用时需要特别注意模板格式。
废话不多说,直接上代码
package com.lunua.parse;
import com.alibaba.fastjson.JSONPath;
import com.google.common.collect.Lists;
import java.util.ArrayList;
import java.util.EmptyStackException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Stack;
public class Parser {
enum Op{
GT(">"),GE(">="),LT("<"),LE("<="),EQ("=="),AND("and"),OR("or"),CONTAINS("contains"),CONTAINS_NOT("containsnot");
private String operator;
Op(String operator) {
this.operator = operator;
}
public String getOperator() {
return operator;
}
public static Op getByOperator(String operator){
if (operator == null || operator.length() == 0){
return null;
}
for (Op op: Op.values()) {
if (op.getOperator().equalsIgnoreCase(operator)){
return op;
}
}
return null;
}
}
private static final List<String> operator = Lists.newArrayList(Op.GT.getOperator(), Op.GE.getOperator(), Op.LT.getOperator(),Op.LE.getOperator(),Op.EQ.getOperator(),Op.AND.getOperator(),Op.OR.getOperator(),Op.CONTAINS.getOperator(),Op.CONTAINS_NOT.getOperator());
private static Map<String, Integer> operatorMap = null;
static {
operatorMap = new HashMap<String, Integer>();
operatorMap.put("(", 1);
operatorMap.put(")", 1);
operatorMap.put("and", 11);
operatorMap.put("or", 12);
operatorMap.put("==", 7);
operatorMap.put("!=", 7);
operatorMap.put(">", 6);
operatorMap.put(">=", 6);
operatorMap.put("<&
java 实现逻辑表达式解析
最新推荐文章于 2024-04-26 10:00:00 发布