我在课堂上将枚举定义为
public enum EnumSample {
SPACE,
NASA,
SPUTNIK;
}
在Test类中,我有一个包含以下代码片段的方法
if (str.contains(<>)) {
是否可以在String的contains方法中搜索所有枚举值?
答案 0 :(得分:2)
您可以迭代枚举的.values()
并为每个枚举应用.contains()
。
例如:
for (EnumSample value : EnumSample.values()) {
if (str.contains(value.name()) {
//do your thing
}
}
答案 1 :(得分:1)
contains
的一个问题是它会找到部分单词 - 例如,它会找到&#34; NASA&#34;在&#34; NASAL DECONGESTANTS&#34;。如果你希望你的比较快,并寻找特定的单词,而不是单词的一部分,请使用正则表达式搜索。
您的示例的正则表达式如下所示:
\b(SPACE|NASA|SPUTNIK)\b
您可以像这样构建和使用它:
static Pattern allEnumVals;
static {
StringBuilder b = new StringBuilder("\\b(");
boolean first = true;
for (EnumSample e : EnumSample.values()) {
if (!first) {
b.append("|");
} else {
first = false;
}
b.append(e.name());
}
b.append(")\\b");
allEnumVals = Pattern.compile(b.toString());
}
static boolean check(String str) {
return allEnumVals.matcher(str).find();
}