gpt4 book ai didi

java - 如何在 Java 中实现 Predicate,用于根据任意数量的规则交叉检查 String?

转载 作者:行者123 更新时间:2023-11-30 08:06:57 31 4
gpt4 key购买 nike

此问题是以下问题的延续:How to check whether an input conforms to an arbitrary amount of rules in Java?

我正在尝试使用谓词根据一组返回 boolean 值的规则/方法来交叉检查字符串/单词。但是,我在我的代码中实现它时遇到了困难。

public class CapValidator {

/** PRIMARY METHODS **/
private boolean capitalize(String word) {
// boolean valid = true;
// for (Predicate<> rule : rules) {
// valid = valid && rule.test(word);
// }
return false;
}

/** SUPPORT METHODS **/
private boolean isNoun(String word) {
// do some logic
}

private boolean isVerb(String word) {
// do some logic
}

private boolean isParticiple(String word) {
// do some logic
}

}

关于如何实现 capitalize(String) 有什么建议吗?它应该检查单词是否符合一组规则(单词是名词或动词或分词或...)。

最佳答案

你可以只拥有以下内容:

private boolean capitalize(String word) {
Stream<Predicate<String>> stream = Stream.of(this::isNoun, this::isVerb, this::isParticiple);
return stream.anyMatch(rule -> rule.test(word));
}

这将创建一个包含 3 个规则的 Stream 来检查并通过 ||ing 每个结果将它们减少为单个值。好处是如果需要添加更多规则,只需要更新Stream声明即可。

但是,另一种(更简单的)解决方案也可能是不使用 Streams 并为每个方法编写一系列 ||

关于java - 如何在 Java 中实现 Predicate,用于根据任意数量的规则交叉检查 String?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33986324/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com