如何将以字符串形式编写的条件转换为Java;如果;条件

如何将以字符串形式编写的条件转换为Java;如果;条件,java,string,Java,String,我有一个用户界面,用户可以在其中构建查询,然后应用这些条件在文本文件中进行搜索。 让我们假设字符串如下:A和(B或C)我还可以访问每个值(A,B,C),逻辑运算符(和,或)和分组括号 所以我需要的是:line.contains(A)&(line.contains(B)| | line.contains(C)) 上述特定条件也可能不起作用,因为我正在每行中搜索该条件,并且条件可能在不同的行中。但这是我必须处理的另一个问题:) 你知道怎么做吗?根据你的评论,我可以使用ScriptEngineMana

我有一个用户界面,用户可以在其中构建查询,然后应用这些条件在文本文件中进行搜索。 让我们假设字符串如下:
A和(B或C)
我还可以访问每个值
(A,B,C)
,逻辑运算符
(和,或)
和分组括号

所以我需要的是:
line.contains(A)&(line.contains(B)| | line.contains(C))

上述特定条件也可能不起作用,因为我正在每行中搜索该条件,并且条件可能在不同的行中。但这是我必须处理的另一个问题:)


你知道怎么做吗?

根据你的评论,我可以使用
ScriptEngineManager
解决我的问题。我正在使用
JavaScript
语言构建要评估的条件,并执行
engine.eval(query)


根据您的评论,我可以使用
ScriptEngineManager
解决我的问题。我正在使用
JavaScript
语言构建要评估的条件,并执行
engine.eval(query)


是否会有比A、B、C更多的值?@sidgate最多可以有5个条件:A、B、C、D、E:)解析输入字符串以构建(And)和(Or)节点树,然后轻松计算结果。看看,我喜欢你的问题。您需要一个表达式树数据结构,从中可以很容易地获得表达式的值。我在C++()中实现了它。当然,我不是一个好的程序员,所以我的代码不干净,但我认为解决一些小问题就足够了。可以有比a、B、C更多的值吗?@sidgate最多有5个条件:a、B、C、D、E:)解析输入字符串以构建(和)和(或)节点树,然后轻松计算结果。看看,我喜欢你的问题。您需要一个表达式树数据结构,从中可以很容易地获得表达式的值。我在C++()中实现了它。当然,我不是一个好的程序员,所以我的代码不干净,但我认为这足以让你解决一些小问题。
boolean found = false;

BufferedReader reader = new BufferedReader(new InputStreamReader(input));
String line = null;
while ((line = reader.readLine()) != null && !contains) {
    if (line.contains(A) && (line.contains(B) || line.contains(C))) {
        found = true;
    }
}

return found;
private boolean containsSearchQuery(InputStream input, String searchQuery) {
    boolean match = false;

    // create a script engine manager
    ScriptEngineManager factory = new ScriptEngineManager();
    // create a JavaScript engine
    ScriptEngine engine = factory.getEngineByName("JavaScript");

    BufferedReader reader = new BufferedReader(new InputStreamReader(input));
    String lines = reader.lines().collect(Collectors.joining());

    engine.put("lines", lines);

    try {
        match = (boolean) engine.eval(searchQuery);
    } catch (ScriptException e) {
        System.out.println("Error: " + e.getMessage());
    }

    return match;
}