using System.Text.RegularExpressions;
public static void Main()
var badWords = new [] { "butt", "fuck" };
var badWordsRegex = string.Join("|", badWords);
new {input = "fuck", expected = "***"},
new {input = "Fuck", expected = "***"},
new {input = "butt", expected = "***"},
new {input = "something fuck", expected = "something ***"},
new {input = "fuck something", expected = "*** something"},
new {input = "Something fucker", expected = "Something fucker"},
new {input = "Something fuck something", expected = "Something *** something"},
new {input = "butter", expected = "butter"},
new {input = "butter butt butter", expected = "butter *** butter"},
new {input = "XXXbutt butt XXXbutt", expected = "XXXbutt *** XXXbutt"},
new {input = "butter butt.butter", expected = "butter ***.butter"},
new {input = "butter,butt butter", expected = "butter,*** butter"}
foreach(var inputText in inputTexts) {
var cleanedText = Regex.Replace(inputText.input, @"\b(" + badWordsRegex + @")\b",
}, RegexOptions.IgnoreCase);
if(cleanedText == inputText.expected) {
Console.WriteLine("[{0}] => [{1}]", inputText.input, cleanedText);
Console.WriteLine("[{0}] => [{1}] ERROR expected: [{2}]", inputText.input, cleanedText, inputText.expected);