2016-12-01 1 views
2

Я пытаюсь создать тест профанации для своего приложения, но, похоже, он неисправен !! Зачем?Профанация не работает как ожидается (в приложении чата)?

код:

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

Так что проблема: я попробовал эти 2 части кодов с аналогичными результатами. Например, для «ебать», если я введу «фу» в мое приложение останавливает его от вводятся или «задницы», если я введу «в» это остановит его от вводимого! (Фильтр работает, чтобы остановить профанацию от входа в чат)

ответ

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; 
} 
+0

Мне было интересно, как бы я сделал карту проклятых слов (возможно ли вам также привести пример), пожалуйста, если вы не возражаете. Спасибо – harsh

+1

почему карта? возможно, список или набор –

+0

На самом деле, список будет лучше, так как есть только небольшое количество проклятых слов. Я думал, что карта даст нам быстрее искать время для проклятых слов ... но я согласен, ее ненужный @ScaryWombat –

1

Я не могу комментировать из-за своей репутации, но, продолжая ответ Элроя JETSON, вы инициализировать HashSet с помощью Arrays.asList, как описано здесь, в этом ответе: https://stackoverflow.com/a/16194967/2836264. Конструктор HashMap принимает в этом случае List<String>, который создается из String[].

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