Java String包含方法和枚举

时间:2015-03-26 08:42:13

标签: java enums

我在课堂上将枚举定义为

public enum EnumSample {
    SPACE,
    NASA,
    SPUTNIK;
}

在Test类中,我有一个包含以下代码片段的方法

if (str.contains(<>)) {

是否可以在String的contains方法中搜索所有枚举值?

2 个答案:

答案 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();
}