C# 去掉所有HTML标记和格式(正则表达式)

C# 去掉所有HTML标记和格式(正则表达式),c#,asp.net,C#,Asp.net,我有我想要动态修改的RSS提要,我所需要的只是文本(和换行符),所以必须删除所有其他内容(所有图像、样式、链接) 如何使用ASP.NET c#string pattern=@“; 返回Regex.Replace(htmlString,pattern,string.Empty); 小心-您不想假设收到的html格式正确: public static string ClearHTMLTagsFromString(string htmlString) { string regEx = @"\&

我有我想要动态修改的RSS提要,我所需要的只是文本(和换行符),所以必须删除所有其他内容(所有图像、样式、链接)

如何使用ASP.NET c#

string pattern=@“;
返回Regex.Replace(htmlString,pattern,string.Empty);

小心-您不想假设收到的html格式正确:

public static string ClearHTMLTagsFromString(string htmlString)
{
    string regEx = @"\<[^\<\>]*\>";
    string tagless = Regex.Replace(htmlString, regEx, string.Empty);

    // remove rogue leftovers
    tagless = tagless.Replace("<", string.Empty).Replace(">", string.Empty);

    return tagless;
}
公共静态字符串ClearHTMLTagsFromString(字符串htmlString)
{
字符串正则表达式=@“\”;
string tagless=Regex.Replace(htmlString,Regex,string.Empty);
//清除残羹剩饭
tagless=tagless.Replace(“,string.Empty”);
返回无标记;
}

我用JavaScript为一个项目做了这件事,方法与上面的方法大致相同:

var thisText = '';
thisText = document.getElementById('textToStrip').value;
var re = new RegExp('<(.|\\n)*?>', 'igm');
thisText = thisText.replace(re, '');
var thisttext='';
thisText=document.getElementById('textToStrip')。值;
var re=新的RegExp(“”,'igm');
thisText=thisText.replace(re',);

正则表达式无法解析XML。不要使用正则表达式解析XML。不要过关。不要收取200英镑

您需要一个合适的XML解析器。将RSS加载到中,然后使用仅获取文本内容

请注意,即使从RSS中提取了描述内容,它也可以包含活动的HTML。即:

<description> &lt;em&gt;Fish&lt;/em&gt; &amp;amp; chips </description>
emFish/em&;amp;炸薯条
当正确解析为XML,然后读取为文本时,可以为您提供文本字符串:

<em>Fish</em> &amp; chips
Fish&;炸薯条
或者,标记:

炸鱼薯条

RSS的有趣之处在于,你并不知道哪个是对的。在RSS2.0中,它是明确的HTML标记(第二种情况);在其他版本中未指定。通常,您应该假设描述可以包含实体编码的HTML标记,如果您想从最终文本中进一步删除这些标记,则需要第二个解析步骤


(不幸的是,由于这是传统HTML而不是XML,因此更难解析;正则表达式甚至比解析XML更无用。在.NET中没有内置的HTML解析器,但有第三方库,如。)

对于值、注释、PI等为“>”的属性失败。您正在清理什么?来自RSS提要的XML本身?或者仅仅是单个提要条目的HTML内容?仅用几个IMG链接清理HTML(RSS的描述字段)。在这种情况下,我将坚持我下面的答案:-)正则表达式文化战争正在肆虐!
<em>Fish</em> &amp; chips