上篇博客我大概說了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有很多內置的數學函數和字符串函數,具體請看源碼學習
有點困了,暫時就說這些吧,以後有的話再補充,打算重點放在下篇多說一下自定義函數的實現
感謝閱讀,如有錯誤,請不吝指正,謝謝