我想做的是某种“禁用词”突出显示。
以下是我的价值观:
我有一个数组中的禁用词列表
{ "word1", "word2", "word3", "word4" }
我有一个代表评论的字符串
"i want to word1ban this word3 stupidword4 comment"
我想在 html 粗体标签 ( <b> </b>
) 中突出显示这些内容。因此,例如,此注释字符串将变为:
"i want to <b>word1</b>ban this <b>word3</b> stupid<b>word4</b> comment"
我实际上这样做的方式是使用正则表达式替换,它工作得很好,除了一件对我来说很烦人的事情。
foreach (var word in words)
{
value = Regex.Replace(value, string.Format(@"{0}", Regex.Escape(HttpUtility.HtmlEncode(word))), "<b>" + word + "</b>", RegexOptions.IgnoreCase);
}
问题在于,它还取决于数组中单词的顺序,是被禁止的单词之一是否会影响您的替换(<b>
或</b>
)
例如,如果您将其添加到禁用词中:<b
按照代码,第一个迭代结果将是:
"i want to <b>word1</b>ban this <b>word3</b> stupid<b>word4</b> comment"
然后替换为<b
after 将是:
"i want to <b><b</b>>word1</b>ban this <b><b</b>>word3</b> stupid<b><b</b>>word4</b> comment"
我不想影响我的替换。我想知道我们怎么能做到这一点。我尝试向我的正则表达式添加例外以排除<b>
和</b>
替换但没有成功。