亵渎性测试不按预期工作(在聊天应用程序中)?

时间:2016-12-01 02:24:21

标签: java android arrays string contains

我正在尝试为我的应用程序创建亵渎性测试,但它似乎出现故障!!为什么呢?

代码:

public boolean filter(String message)
{

    String[] words={*CUSS WORDS*};

    for(int i=0; i< (words.length-1); i++ )
    {
        if(message.indexOf(words[i].toLowerCase())!= -1)
        {
            return true;
        }
    }
    return false;
}

或另一个代码(但相同的功能):

public boolean filter(String message)
{

    String[] words={CUSS WORDS};

    for(int i=0; i< (words.length-1); i++ )
    {
        if(message.contains(words[i}))
        {
            return true;
        }
    }
    return false;
}

所以问题是: 我尝试了这两个代码类似的代码。例如,对于&#34; 他妈的&#34;,如果我输入&#34; fu &#34;进入我的应用程序会阻止它被输入或者#34; 屁股&#34;,如果我输入&#34; &#34;它阻止它被输入! (过滤器可以阻止任何亵渎进入聊天

2 个答案:

答案 0 :(得分:1)

将您的诅咒词存储在一个集合中,然后将用户句子分解为单个单词。检查每个单词,看看它是否在你的诅咒词集中。

public boolean curse(String str){
    //Create your set here
   HashSet<String> wordSet = new HashSet<String>();

    //Use it's add function to add your curse words
    wordSet.add("ass");

    String array[] = str.split(" ");

    for(String s : array){
        if(wordSet.contains(s.toLowerCase()))
            return true;
    }

    return false;
 }

答案 1 :(得分:1)

由于我的声誉,我无法评论,但是,继续Elroy Jetson的回答,您使用Arrays.asList初始化HashSet,如本答案中所述:https://stackoverflow.com/a/16194967/2836264。 HashMap构造函数在本例中为List<String>,它是从String[]创建的。

String[] cussArray = {"fuck", "shit", "brocolli"};
HashSet<String> cussSet = new HashSet<>(Arrays.asList(cussArray));