1 回答

TA贡献1804条经验 获得超8个赞
如果我理解正确,您想在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);
}
编辑
此外,您实际上并不需要重新发明轮子。这是一篇关于亵渎过滤器的精彩 SO 帖子。
- 1 回答
- 0 关注
- 228 浏览
添加回答
举报