using System; using System.Linq; using System.Text; class Program { private static void Main() { var replaceCodes = new[] { "brown" ,"j" }; var sb = new StringBuilder().Append("The quick bbrownbrownrown fox jumps over the lazy dog"); var outStr = replaceCodes.Aggregate(sb, StringBilderCleaner).ToString(); Console.WriteLine(outStr); } static StringBuilder StringBilderCleaner(StringBuilder sbStr, string rmStr) { var startIndex = 0; for (var i=0; i < sbStr.Length; i++) { var l = i - startIndex; if (l == rmStr.Length) { sbStr.Remove(startIndex, l); i=Math.Max(i-2*l-1,0); startIndex = i+1; }else if (rmStr[l] != sbStr[i]) { if (l > 0) i--; startIndex = i + 1; } } return sbStr; } }