Java - 从字符串生成条件

时间:2012-05-14 16:02:58

标签: java

我正在尝试使用字符串生成一些条件我得到输入 例如,我得到字符串“长度= 15”,我想从那里创建条件: 长度== 15。 更具体地说,我的程序中有一个名为length的int,它被设置为一个特定的值 我想从用户那里获得一个条件作为输入(“长度< 15”或“length = 15”....)并创建一个if语句来生成条件并测试它。
这样做的最佳方式是什么? 非常感谢 本

3 个答案:

答案 0 :(得分:1)

除非您在谈论代码生成(即通过输入字符串生成Java代码),否则无法基于字符串生成if语句。

您必须为条件语言编写解析器,并解释生成的解析树。

最后看起来像这样:

Condition cond = ConditionParser.parse("length = 15");

if (cond.eval()) {
    // condition is true
}

答案 1 :(得分:0)

使用字符串标记生成器。区分标记(或输入字符串的最小部分)的默认方法是空格,这对您有利。 查看javadocs了解详情: http://docs.oracle.com/javase/1.3/docs/api/java/util/StringTokenizer.html

答案 2 :(得分:0)

根据您对输入格式的限制,您可以考虑使用Rhino嵌入Javascript。您的“条件”只需要是有效的JavaScript代码。这样的事情(免责声明:尚未编译):

import javax.script.*;

public bool evalCondition (Object context, String javascript)  {
  ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript");
  Object result = engine.eval(javascript);
  Boolean condTrue = (Boolean)result;
  return condTrue;
}

有关详细信息,请参阅Embedding Rhino Tutorial