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


有一个更好的方法吗?

我的过滤器未捕获所需的东西。

最佳答案

当前,仅当textcursewords中的一项相同(完全没有其他字符)时,您的过滤器才起作用。要解决此问题,您需要遍历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/

10-09 19:40