java
- 以下语句如何执行?
int money = 2500;
String str = "money>=2000&&money<=4000" ;
System.out.println(str);
- 解决办法:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-jexl</artifactId>
<version>2.0</version>
</dependency>
/**
* @Description: 将字符串转换成可执行代码
* @params: [jexlExp, map]
* @return: java.lang.Object
* @Author: wangxianlin
* @Date: 2020/11/4 4:32 PM
*/
public static Object convertToCode(String jexlExp,Map<String,Object> map){
JexlEngine jexl=new JexlEngine();
Expression e = jexl.createExpression(jexlExp);
JexlContext jc = new MapContext();
for(String key:map.keySet()){
jc.set(key, map.get(key));
}
if(null==e.evaluate(jc)){
return "";
}
return e.evaluate(jc);
}
public static void main(String[] args) {
try {
Map<String,Object> map=new HashMap<String,Object>();
map.put("money",2100);
String expression="money>=2000&&money<=4000";
Object code = convertToCode(expression,map);
System.out.println(code);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
-
运行结果
image.png
javaScript
var x = 2500;
var str = "x>=2000&&x<=4000" ;
console.log(str);
- eval()
函数可计算某个字符串,并执行其中的的 JavaScript 代码。
-
运行结果
eval.png
网友评论