目录

Java-计算字符串表达式字符串代码

Java 计算字符串表达式(字符串代码)

Java 计算字符串表达式(字符串代码)

Java 执行字符串代码的方案有很多中,一般情况下我们计算字符串表达式的场景有:

  • 计算逻辑判断式,并返回判断结果(true,false)
  • 计算表达式值,一般返回结果为数值
  • 根据条件简单拼接字符串,返回结果为拼接文本

我们可以使用 Java 内部自带的 JavaScript 引擎实现上述效果。

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

class Scratch {
public static void main(String[] args) throws ScriptException {
ScriptEngineManager manager = new ScriptEngineManager();
// 创建脚本执行引擎
ScriptEngine engine = manager.getEngineByName("js");
// 执行逻辑判断
final boolean ret = (boolean) engine.eval("1 == 2");
System.out.println(ret);
}
}

工具: Hutool

当然,在通常情况下,我们不希望管 ScriptEngineManager 或者 ScriptEngine 什么鬼,只是希望能够计算一个字符串表达式的结果,这里强烈推荐在项目中引入工具包: 。通过这个工具包,我们可以不用管上述两个东西是什么,只需要关注我们的字符串表达式,并且确保表达式的语法符合 JavaScript 语法即可,Hutool 。

Maven 引入工具包坐标:

<!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.5.9</version>
</dependency>

代码中执行:

String ret = (String) ScriptUtil.eval("'Hello World'");
// 在执行 js 脚本时,不要使用 return 返回结果,否则会报 Invalid return statement 异常
// 如果想要返回结果,可以直接在脚本末尾给出该变量
System.out.println(ret);// Hello World

即可获取到表达式执行结果。