如何删除所有标签并获取纯文本?

时间:2013-04-30 15:42:54

标签: asp.net html regex html-agility-pack informix

我必须使用HTML and CSS格式将用户输入文本存储在我的数据库中。

案例是:

RadEditor,用户将文本从MSWord复制到此编辑器,然后我将此文本存储在具有该格式的数据库中。然后当检索报告中的数据或某些标签时,会出现一些标签包裹文本!!

我使用正则表达式来删除所有格式,但是它有时会成功,而不是所有时间都成功。

private static Regex oClearHtmlScript = new Regex(@"<(.|\n)*?>", RegexOptions.Compiled);

        public static string RemoveAllHTMLTags(string sHtml)
        {

            sHtml = sHtml.Replace("&nbsp;", string.Empty);
            sHtml = sHtml.Replace("&gt;", ">");
            sHtml = sHtml.Replace("&lt;", "<");
            sHtml = sHtml.Replace("&amp;", "&");
            if (string.IsNullOrEmpty(sHtml))
                return string.Empty;

            return oClearHtmlScript.Replace(sHtml, string.Empty);
        }

我问如何使用HTMLAgility或任何可靠的方式删除所有格式以确保文本是纯粹的?

Note:数据库中此字段的数据类型为Lvarchar

4 个答案:

答案 0 :(得分:2)

This post推荐以下方法(似乎已被接受)。

Regex.Replace(myHTMLString, @"<p>|</p>|<br>|<br />", "\r\n", );
Regex.Replace(myHTMLString, @"<.+?>", string.Empty);

如果您仍然遇到困难,可以尝试实例化RadEditor并使用.Text属性。我之前没有使用过RadEditor但是我做了一些挖掘 - 你能不能试试像这样的事情

RadEditor editor = new RadEditor();
editor.Content = myHTMLString;
string plainText = editor.Text;

这可能是一项非常昂贵的操作,但我很想知道它是否有效!

答案 1 :(得分:2)

这应该从字符串中删除所有html标记。

sHtml = Regex.Replace(sHtml, "<.*?>", "");

答案 2 :(得分:2)

HtmlAgility包可以轻松使用HTML。

HtmlDocument mainDoc = new HtmlDocument();
string htmlString = "<html><body><h1>Test</h1> more text</body></html>"
mainDoc.LoadHtml(htmlString);
string cleanText = mainDoc.DocumentNode.InnerText;

答案 3 :(得分:1)

请参阅我的回答here,了解如何使用Agility Pack完成任务。 您可能需要稍微更改一下代码,而不是删除少于两个字符的单词。此外,换行符也将被删除,因此您将留下一长串文字。