假设我让用户使用 Javascript 编写条件,用户可以编写条件来执行测试并返回 true 或 false。例如:
INS>5 || ASTO.valueBetween(10,210)
我想找出用户编写的脚本中使用了哪些变量。我试图找到一种在 Java 中获取标识符名称的方法。Rhino 库没有多大帮助。但是我发现通过处理异常我可以获得所有的标识符。所以这个问题就解决了。
所以一切都很好,但有一个小问题。如何用数字标识符替换这些标识符?例如INS应该是_234并且ASTO应该是_331。
INS等ASTO是我数据库中的实体。我想替换它们,因为名称可能会改变。我可以使用替换来做到这一点,但这并不容易,因为:
- 它应该是可逆的。例如
ASTOto_234和_234toASTO再一次。 - 替换
_23为MPLAH也可能替换为_234. 这可以通过正则表达式以某种方式解决。 - 如果
_23在评论区怎么办?很少发生,但有可能/* _23 fdsafd ktl */。它也应该被更换。 - 如果它是函数的名称怎么办?例如
_32() {}。也很少见,但不应更换。 - 如果它包含在
""or中''怎么办?
我相信还有更多的案例。有任何想法吗?