2016-10-07 13 views
-2

私は現在、禁止された単語のチャットを自動的にスキャンし、それらを発言するときに時間を節約するモデレータロボットを構築しようとしています。テキストファイルから禁止された単語を読む

現在、私は文字列リストに禁止されている単語を持っていますが、実際には単語のほうが大きい部分を手軽に書くことができます。.txtコードは悪い言葉しか含んでいません。今のところそう

List<string> BannedWords = new List<string> { "dog", "kitten", "bird" }; 

private bool BannedWordFilter(string username, string message) 
{ 
    foreach(string word in BannedWords) 
    { 
     if (message.Contains(word)) 
     { 
      string command = "/timeout " + username + " 10"; 
      irc.sendChatMessage(command); 
      irc.sendChatMessage(username + "no banned words allowed!"); 
      return true; 
     } 
    } 
    return false; 
} 

ボットがタイムアウトし、私はテストとして我慢した単語を言って人:

現在、これを行うコードの私(の一部)は次のようになります。 しかし、ボットが.txtファイルから単語を取り出すように、どうやってそれを構築できるかはわかりません。

+1

'BannedWords = FileReadAllLines(" banned.txt ")。ToList();' – Plutonix

答えて

4

1行に1つの禁止語句を含むテキストがある場合、例:このように:

dog 
kitten 
bird 

...あなたは

BannedWords = System.IO.File.ReadAllLines("bannedWords.txt")`; 

を使用してそれを読むことができますこれは、各テキストファイルの行を含む、文字列の配列を返します。詳細については、hereを参照してください。ところで

:あなたが禁止された単語をたくさん持っている場合、これは例えば、より高速な検索を行いますと、検索に続い入れた方が良いかもしれません:

// read banned words 
private ILookup<string, string> BannedWords; 
// ... 
BannedWords = File.ReadAllLines("bannedWords.txt").ToLookup(w => w); 

// check message for banned words 
if (message.Split(' ').Any(w => bannedWords.Contains(w)) 
{ 
    // message contains a banned word 
} 
+0

ありがとうございます。残念ながら、私はそれらの行を挿入しようとするとかなりのエラーが発生します。私はILookup の2つの要素が必要ですか? – scitch

+0

@scitchは 'private ILookup BannedWords'にしてください。 – Rob

2

これはそれを行う必要があります。

var wordsFile = File.ReadAllLines(BANNEDWORDS_PATH); 
List<string> BannedWords = new List<string>(wordsFile); 
+0

ありがとうございました。 しかし、私はそれを使用しようとすると、 "この修飾子は読み取り専用ではありません"と言う:( – scitch

関連する問題