List<String> cursewords = new ArrayList<String>();
cursewords.add("darn it");
cursewords.add("gosh");
cursewords.add("gee whiz");
cursewords.add("golly");
String text = " Golly ";
if (cursewords.contains(text.trim().toLowerCase()) {
System.out.println("found curse:" + text);
}
有一个更好的方法吗?
我的过滤器未捕获所需的东西。
最佳答案
当前,仅当text
与cursewords
中的一项相同(完全没有其他字符)时,您的过滤器才起作用。要解决此问题,您需要遍历cursewords
中的项目,并检查text
是否包含它。
这是一个简单的示例(使用enhanced for
loop):
// Convert the string to lowercase here, instead of within the loop
string lowerCaseText = text.toLowerCase();
for (String curse : cursewords) {
if (lowerCaseText.contains(curse)) {
System.out.println("found curse:" + curse);
}
}
尽管正如其他人提到的那样,使用正则表达式来解释诅咒的变化并避免使用clbuttic mistakes可能会更好。
关于java - 为什么我的亵渎过滤器不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4125519/