我在考虑如何改进我的计划的一部分,但我想知道是否有一个"银弹"对于这种情况。是否有任何策略可以避免这样的大if OR statements
?:
public boolean containsCharOfWord() {
if (this.name.contains("b") || this.name.contains("a")
|| this.name.contains("c") || this.name.contains("t")
|| this.name.contains("e") || this.name.contains("r")
|| this.name.contains("i") || this.name.contains("a")) {
return true;
}
return false;
}
谢谢大家!
答案 0 :(得分:4)
return CharMatcher.anyOf("bacteria").matchesAnyOf(name);
花哨的版本将是
private static final CharMatcher VIRUS = CharMatcher.anyOf("bacteria").precomputed();
... return VIRUS.matchesAnyOf(name);
预计算返回更快的匹配器。
答案 1 :(得分:3)
您应该尝试使用正则表达式
public boolean containsCharOfWord() {
return this.name.matches("(.*)([bacteria])(.*)");
}
答案 2 :(得分:1)
首先,删除this.name.contains(“a”),因为它是重复的
然后你可以尝试切换(JDK7)
switch (name) {
case "b":
// do something
case "a":
// do something
case "c":
// do something
case "t":
// do something
case "e":
// do something
case "r":
// do something
case "i":
// do something
}
答案 3 :(得分:1)
您想要概括名称中的一系列字符:
public boolean containsAnyCharOfWord(String word) {
for (int i = 0; i < word.length(); i++) {
if (this.name.contains(String.valueOf(word.charAt(i)))) {
return true;
}
}
return false;
}
public boolean containsCharOfWord() {
return containsAnyCharOfWord("bacteri"); // don't need to check for 'a' twice
}
答案 4 :(得分:1)
没有任何外部库:使用正则表达式匹配/模式匹配:即。 &#34;我的字符串是否匹配任何所述字符&#34;?
myString.matches(".*[bacteria].*")