Если я вас правильно понимаю, вы хотите найти в строке html
слова из списка фильтров и заменить их на некоторую HTML
кодированную строку плюс *
вместо «плохих слов».
Regex
- отличное решение для этого.
Итак, скажем, у вас есть список слов, подобный этому:
List<string> badWords = new List<string>
{
"Damn",
"Hell",
"Idiot"
};
А это ваш HTML
.
var html = "You're a damn idIOT!!";
Ладно, не много в этом HTML
, но терпите меня.
Теперь вы перебираете список слов, и мы создаем Regex
для каждого слова без учета регистра. Затем, в зависимости от длины слова, мы создаем строку замены. Затем позвоните Regex.Replace()
.
foreach (var word in badWords)
{
Regex rgx = new Regex(word, RegexOptions.IgnoreCase);
var blocked = new string('*', word.Length);
var replacement = "<span style='background-color: rgb(255, 0, 0);'>" + blocked + "</span>";
html = rgx.Replace(html, replacement);
}
Редактировать
Кроме того, вам не нужно изобретать велосипед. Здесь - отличный пост о фильтрах ненормативной лексики.