2016-12-01 8 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; 
} 

または他のコード(同じFUNCTION):

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

だから問題は: Iは、同様の結果とコードのこれらの2個を試してみました。 「ファック」については、例えば、私は私のアプリに「FU」と入力した場合、私はそれが入力されてからそれを止める「として」と入力すると、それは、入力されてから、または「」のためにそれを停止します! (ろう者がチャットに入るのを防ぐために働きます

答えて

1

あなたの呪いの言葉を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の答えを続け、あなたは、は、Arrays.asListを使用してHashSetのを初期化し、なぜなら私の評判はコメントすることはできませんが、:https://stackoverflow.com/a/16194967/2836264。この場合、HashMapコンストラクタはList<String>をとります。これはString[]から作成されます。

関連する問題