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