Java 字符串包含方法和枚举

Java String contain method and enum

我在 class 中将枚举定义为

public enum EnumSample {
    SPACE,
    NASA,
    SPUTNIK;
}

在class测试中,我有一个带有以下代码片段的方法

if (str.contains(<>)) {

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

您可以遍历枚举的 .values() 并为每个枚举应用 .contains()

例如:

for (EnumSample value : EnumSample.values()) {
    if (str.contains(value.name()) {
        //do your thing
    }
}

contains 的一个问题是它会找到部分单词 - 例如,它会在 "NASAL DECONGESTANTS" 中找到 "NASA"。如果您希望比较速度更快,并查找特定词而不是词的一部分,请改用正则表达式搜索。

您的示例的正则表达式如下所示:

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