Я думаю о чем-то как:
foreach (var word in paragraph.split(' ')) {
if (badWordArray.Contains(word) {
// do something about it
}
}
но я уверен, что существует лучший путь.
Заранее спасибо!
ОБНОВЛЕНИЕ я не надеюсь удалять ругательства автоматически... для моего веб-приложения, я хочу быть уведомленным, если слово, которое я считаю "плохо", используется. Затем я рассмотрю его сам, чтобы удостовериться, что это законно. Автоматическая отмечающая своего рода система.
Хотя ваш способ работает, это может занять немного времени. Здесь есть замечательный ответ на предыдущий вопрос SO. Хотя вопрос касается PHP, а не C #, я думаю, что его можно легко перенести.
Отредактируйте, чтобы добавить образец кода:
public string FilterWords(string inputWords) {
Regex wordFilter = new Regex("(puppies|kittens|dolphins|crabs)");
return wordFilter.Replace(inputWords, "<3");
}
Это должно сработать для вас более или менее.
Отредактируйте, чтобы ответить на пояснение OP:
Я не хочу автоматически удалять непристойности ... для моего веб-приложения я хочу получать уведомления, если используется слово, которое я считаю "плохим".
Как и в случае с заменой выше, вы можете увидеть, соответствует ли что-то так:
public bool HasBadWords(string inputWords) {
Regex wordFilter = new Regex("(puppies|kittens|dolphins|crabs)");
return wordFilter.IsMatch(inputWords);
}
Он вернет true
, если строка, которую вы ему передали, содержит какие-либо слова в списке.
Вы можете использовать объекты HashKey
или Dictionary
На моей работе мы ввели автоматическую фильтрацию плохих слов в наше программное обеспечение (это немного шокирует, когда просматриваешь источник и вдруг натыкаешься на массив, содержащий несколько страниц непристойностей).
Один из советов - предварительно обрабатывать пользовательский ввод перед проверкой на соответствие вашему списку, на тот случай, если кто-то пытается что-то проскочить мимо вас. Итак, для предварительной обработки мы
А потом позовите друзей, чтобы они попытались его сломать. Это весело.