我想删除命名的html实体,并用它们的数字等价物替换它们。不幸的是,HtmlDecode删除了两者。有没有办法只删除指定的?
var cats = "<div> </div> <p>β</p>";
cats = HttpUtility.HtmlDecode(cats);
我想要这个输出
<div> </div> <p>Β</p>
答案 0 :(得分:2)
您可以使用正则表达式查找指定的HTML实体,对其进行解码,然后创建等效的数字:
cats = Regex.Replace(cats, @"(&[A-Za-z]+;)", m => {
return "&#" + ((int)HttpUtility.HtmlDecode(m.Value)[0]) + ";";
});
如果你想忽略那些无效的实体,你会解码它们,然后检查它们是否发生了变化,这样你就可以离开它们,如果它们没有:
cats = Regex.Replace(cats, @"(&[A-Za-z]+;)", m => {
string decoded = HttpUtility.HtmlDecode(m.Value);
return decoded != m.Value ? "&#" + ((int)decoded[0]) + ";" : m.Value;
});