可以使用正则表达式进行匹配和替换,具体代码如下:

string html = "<div><p>这是一段<br>有换行的文本。</p><a href=\"https://www.example.com\">这是一个链接</a><img src=\"example.png\"></div>";

// 将 <br> 替换为 \n
html = Regex.Replace(html, "<br\\s*/?>", "\n");

// 过滤除 <a> 标签外的标签
html = Regex.Replace(html, "<(?!(a\\s|/a\\s*>)|\\w+\\s*=\\s*\"[^\"]*\"\\s*)(\\w+)(\\s*[^>]*)?>", "");

Console.WriteLine(html);

输出结果为:

这是一段
有换行的文本。
<a href="https://www.example.com">这是一个链接</a>

解释一下上述代码:

首先使用 Regex.Replace 方法将 <br> 标签替换为 \n,其中正则表达式 <br\\s*/?> 匹配的是 <br><br />

然后使用 Regex.Replace 方法再次匹配,将除 <a> 标签和属性外的所有标签过滤掉。正则表达式 <(?!(a\\s|/a\\s*>)|\\w+\\s*=\\s*\"[^\"]*\"\\s*)(\\w+)(\\s*[^>]*)?> 匹配的是除 <a> 标签和属性外的所有标签,其中 (?!...) 表示否定预查,\\w+\\s*=\\s*\"[^\"]*\"\\s* 匹配的是标签属性,\\s*[^>]* 匹配的是标签其他内容。

最后输出过滤后的 html 内容

C# 把html中br换成n然后过滤掉除a标签外的标签

原文地址: https://www.cveoy.top/t/topic/dCIc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录