【发布时间】:2019-07-02 16:12:16
【问题描述】:
我有一个 UI,用户可以在其中构建查询,然后应用这些条件在文本文件中进行搜索。
假设字符串如下:A and (B or C) 我还可以访问每个值 (A, B, C)、逻辑运算符 (and, or) 和分组括号。
所以我需要的是:line.contains(A) && (line.contains(B) || line.contains(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;
上述特定条件也可能不起作用,因为我在每一行中都在搜索,并且条件可能在不同的行中。但这是我必须处理的另一个问题:)
你知道怎么做吗?
【问题讨论】:
-
可以有比 A,B,C 更多的值吗?
-
@sidgate 最多可以有 5 个条件:A、B、C、D、E :)
-
解析输入字符串,构建(与)和(或)节点树,然后轻松计算结果。
-
我喜欢你的问题。您需要一个表达式树数据结构,从中您可以轻松获取表达式的值。我已经用 C++ (github.com/TaQuangTu/ExpressionTreeC-) 实现了它。当然我不是一个好的程序员,所以我的代码不干净,但我认为它足以让你解决一些小问题。