java - 解析有关搜索条件的用户输入

标签 java search parsing user-input

我正在寻找一种方法来解析一些用户输入。输入应显示必须执行哪些搜索以及如何组合它们。

  • 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/

相关文章:

java - 无法以编程方式创建 AZURE VM

python - 使用python搜索超大文本文件

c - 打印从文件加载的字符串 (char*),没有转义的特殊序列(如\n)

parsing - 如何解析 WMV (ASF) 文件?找不到数据包的长度

java - 无法在 OSX 上启动 Eclipse(版本不适合)

java - 数组列表和添加值时遇到一些问题。 java

vb.net - 高级文本搜索并将特定字符串从文件导入 VB

java - "No value for"getJSONArray 异常

java - 如何在 Java 中对表数据结构中的数据进行排序?

c++ - 包含 C++ 字符串的文本文件中的字符串