上篇博客我大概说了jeval是啥,有啥优点,为啥选择他之类的问题,这篇我简单说一下jeval内置函数吧,知道是啥,然后会简单的使用,下篇博客我介绍一下jeval实现自定义函数。
闲言少叙,上代码
<!-- https://mvnrepository.com/artifact/net.sourceforge.jeval/jeval -->
<dependency>
<groupId>net.sourceforge.jeval</groupId>
<artifactId>jeval</artifactId>
<version>0.9.4</version>
</dependency>
上面是jeval的mavan 中心地址,基于mavan开发的同学可配置在自己的pom文件里把jar拉到本地仓库进行开发。
不是maven的就自己从mavan 中心仓库自己下载jar打到本地libraries
public class StringTest {
public static void main(String[] args) {
Evaluator evaluator = new Evaluator();
try {
System.out.println("1.-->"+evaluator.evaluate("1+2*3-2/1")); //直接计算字符串型的数学表达式
System.out.println("2.-->"+evaluator.evaluate("toUpperCase(trim( trim(' a b c ') ))")); //运行java中的方法
evaluator.putVariable("a", "'Hello'");//定义字符串变量
evaluator.putVariable("b", "'World'");
evaluator.putVariable("c", "1"); //定义数字变量
evaluator.putVariable("d", "2");
System.out.println("3.-->"+evaluator.evaluate("#{a}")); //输出字符串
System.out.println("4.-->"+evaluator.evaluate("#{b}"));
System.out.println("5.-->"+evaluator.evaluate("#{PI}"));
System.out.println("6.-->"+evaluator.evaluate("#{a} + ' ' + #{b} + '!'")); //拼接后输出
System.out.println("7.-->"+evaluator.evaluate("(#{c} + #{d}) - #{c}")); //拼接后输出计算结果
System.out.println("8.-->"+evaluator.evaluate("(#{c} + #{d}) + '!'")); //拼接后输出计算结果
} catch (EvaluationException ee) {
System.out.println(ee);
}
}
这个测试类是我从其他地方copy过来的,具体哪里拷贝的记不清了,我发现好多介绍jeval的博客都用的是同样的测试类。。。
这里让我写测试类的话也是和上面的类似,本着能偷懒就偷懒的原则,就借鉴一下吧。
输出结果如下:
1.-->5.0
2.-->'A B C'
3.-->'Hello'
4.-->'World'
5.-->3.141592653589793
6.-->'Hello World!'
7.-->2.0
net.sourceforge.jeval.EvaluationException: Expression is invalid.
这些测试基本一看就懂,我主要说一下注意事项吧:
- jeval默认是单引号’作为字符串的引号的,字符串传参必须带单引号
- 数字和字符串不能出现在操作符两侧,比如上面的8 就不能正常运行
- jeval有很多内置的数学函数和字符串函数,具体请看源码学习
有点困了,暂时就说这些吧,以后有的话再补充,打算重点放在下篇多说一下自定义函数的实现
感谢阅读,如有错误,请不吝指正,谢谢