jExParserJava表達(dá)式解析求值程序
jExParser 一個(gè)簡(jiǎn)單的Java表達(dá)式解析求值程序
在jSqlBox項(xiàng)目開(kāi)發(fā)時(shí)寫(xiě)的一個(gè)簡(jiǎn)單的Java表達(dá)式解析求值程序,支持變量和參數(shù),現(xiàn)將源碼抽取出來(lái),沒(méi)有什么特別優(yōu)點(diǎn),唯一的長(zhǎng)處就是簡(jiǎn)單,直接中綴求值,僅三個(gè)文件700行源碼,無(wú)第三方庫(kù)依賴(lài)。因?yàn)楸容^簡(jiǎn)單而且通常用于二次開(kāi)發(fā),所以沒(méi)有做成包發(fā)布,如有項(xiàng)目中需要用到把源碼拷過(guò)去就可以用了。 用法如下(或參考單元測(cè)試):
Map<String, Object> keywords = new HashMap<String, Object>();
keywords.put("USERNAME", "Tom");
keywords.put("ID", "001");
Assert.assertEquals(true, new ExParser().doParse(keywords,
"(1+2)*3/4>0.1/(9+?) and (userName equals ?) or id equals ?", 100, "Tom", "001"));
ExParser類(lèi)的doParse()方法解析一個(gè)表達(dá)式,返回類(lèi)型可能為Boolean、Long、Double、String、null之一。 目前支持的操作符和函數(shù)如下:
> < = >= <= + - * / or and not ' ( ) ? 0~9 . equals equalsIgnoreCase contains containsIgnoreCase startWith startWithIgnoreCase endWith endWithIgnoreCase
評(píng)論
圖片
表情
