Пожалуйста, смотрите это "clbuttic" (или для случая п [Censored] IC) статьи, прежде чем делать строку замены без учета границ слов:
http://www.codinghorror.com/blog/2008/10/obscenity-filters-bad-idea-or-incredibly-intercoursing-bad-idea.html
Update
Очевидно, что нет (см. статью выше - этот подход настолько легко обойти или создать ложные срабатывания ...) или оптимизирован (регулярные выражения должны быть кэшированы и скомпилированы), но следующее будет отфильтровывать целые слова (без «clbuttics») и простые множественные числа слов:
const string CensoredText = "[Censored]";
const string PatternTemplate = @"\b({0})(s?)\b";
const RegexOptions Options = RegexOptions.IgnoreCase;
string[] badWords = new[] { "cranberrying", "chuffing", "ass" };
IEnumerable<Regex> badWordMatchers = badWords.
Select(x => new Regex(string.Format(PatternTemplate, x), Options));
string input = "I've had no cranberrying sleep for chuffing chuffings days -
the next door neighbour is playing classical music at full tilt!";
string output = badWordMatchers.
Aggregate(input, (current, matcher) => matcher.Replace(current, CensoredText));
Console.WriteLine(output);
Дает выход:
Я была не [Censored] сон для [Censored] [Censored] дней - сосед играет классическую музыку на скаку!
Обратите внимание, что «классический» не становится «cl [Censored] ical», поскольку целые слова сопоставляются с регулярным выражением.
Update 2
И продемонстрировать вкус, как это (и в целом основной строки \ сопоставления с образцом методы) могут быть легко сорвано см следующую строку:
«I» у меня не было сна Cranberryıng для chuffıng chuffıngs days - сосед по соседству играет классическую музыку при полном наклоне! »
Я заменил «i» на турецкий чехол без знака «ı». Все еще выглядит довольно оскорбительным!
Это, вероятно, не очень хорошая идея обновлять/вставлять цензурные строки без сохранения копии строки без цензуры. Скорее всего, вам придется адаптировать стратегию слова и замены для многих итераций до тех пор, пока она не станет «достаточно правильной» и не должна рисковать, чтобы уничтожить ваши данные за это время. –
Дал вам голос, просто назвав их «Плохие слова». – Chris