【发布时间】:2017-12-06 10:26:51
【问题描述】:
例如,我有一个String:
String s= "(resultSet.get(\"PRIMARY_ROLE\")=='COO Business Management Team' && resultSet.get(\"DEPT_LEVEL\")=='5') ? 1:0";
其中resultSet 是map。
有没有办法可以将它转换为表达式,以便我可以评估它的值。
说:
int i= (resultSet.get("PRIMARY_ROLE")=='COO Business Management Team' && resultSet.get("DEPT_LEVEL")=='5') ? 1:0 ;
【问题讨论】:
-
写一个解析器。或者将其写入具有足够环境的文件以使其成为语法正确的类定义,然后编译、加载和执行它。由于您在编写代码时不知道此字符串,因此它必须来自外部源。执行这样的代码总是很危险的。
-
这个代码串的来源是什么?提取你需要的部分可能比尝试解析你现在拥有的更容易。
-
使用现有的解析器,例如这个:github.com/stefanhaustein/expressionparser(免责声明:我有偏见,因为我写的)