【问题标题】:How to check whether an input conforms to an arbitrary amount of rules in Java?如何检查输入是否符合 Java 中的任意数量的规则?
【发布时间】:2016-03-03 07:16:06
【问题描述】:

对于我的特定任务,我正在尝试检查一个单词是否属于指定的词性集。可以这样做:

private boolean validate(String word) {
    if (isNoun(word) || isVerb(word) || isParticiple(word) || ... )
        return true;
    else
        return false;
}

但是,正如您所见,它很快就会变得丑陋且难以扩展。 如果我根据一组 20 条规则测试这些字符串,那么应该有一种更简洁、更具可扩展性的方法来执行此操作。

有什么想法可以让我的代码在扩展时更简洁、更好?

【问题讨论】:

  • 你能解释一下你所说的“更干净和更可扩展”是什么意思吗?
  • 如果您可以发布单独的问题而不是将您的问题合并为一个问题,则最好。这样,它可以帮助人们回答您的问题,也可以帮助其他人至少寻找您的一个问题。谢谢!
  • 好的,我会把我的编辑移到一个单独的,谢谢。编辑:移到这里:stackoverflow.com/questions/33986324/…

标签: java parsing filtering validating


【解决方案1】:

确实有。您可以构造(或传入)List<@987654321@<String>>,然后像这样遍历它:

// rules being the predicate list
boolean valid = true;
for (Predicate<> rule : rules) {
    valid = valid && rule.test(word);
}
// At the end of this valid will only remain true if all of the rules pass.

【讨论】:

猜你喜欢
  • 2016-09-21
  • 1970-01-01
  • 2018-05-13
  • 2022-11-09
  • 2015-11-08
  • 2020-07-08
  • 1970-01-01
  • 2012-12-30
  • 1970-01-01
相关资源
最近更新 更多