我正在寻找一种方法来解析一些用户输入。输入应显示必须执行哪些搜索以及如何组合它们。
- 1 和 2
- (3 和 2)或 1
- (3 和 2)或(1 和 4)
- ( (3 或 4) 和 1) 或 2
- 等等
第一个示例应该以 AND 方式组合搜索 1 和 2 的结果。第二个示例应该以 AND 方式组合搜索 3 和 2 的结果,并以 OR 方式将此组合的结果与搜索 1 的结果组合。等等
关于如何做到这一点有什么想法吗?
最佳答案
将您的“结果”想象成一个对象,它在以下接口(interface)中为 and 或 like 提供方法:
public interface AndOrCapable<T> {
public T and(T anOtherResult);
public T or(T anOtherResult);
}
然后您可以将您的用户输入翻译成如下内容:
Result total = r2.or(r1.and(r3.or(r4))); // your fourth example
这只是为了阐明概念 - 在您的情况下,您需要一个动态评估器,因为您使用用户输入。
因此您仍然需要 validator/解析器将用户输入转换为(语法)树,这将是您用来计算总数的模型。
希望对您有所帮助!
关于java - 解析有关搜索条件的用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1789841/