将HTML文本转换为纯文本

时间:2012-03-29 07:43:30

标签: c# model-view-controller html-encode

我有一个文字区域。 我允许输入html标记,因为可以输入任何html代码。

现在我想将html代码转换为纯文本,而不使用第三方工具......怎么做呢

目前我正在这样做: -

var desc = Convert.ToString(Html.Raw(Convert.ToString(drJob["Description"])));

drJob [“Description”]是我从中获取描述的数据行,我想将描述转换为纯文本。

4 个答案:

答案 0 :(得分:2)

没有直接来自.NET的方法来做到这一点。您需要使用HtmlAgilePack等第三方工具,或者在javascript中执行此操作。

document.getElementById('myTextContainer').innerText = document.getElementById('myMarkupContainer').innerText;

为了您的安全,请勿使用正则表达式。 (http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html

答案 1 :(得分:1)

您可以使用System.Text.RegularExpressions.Regex

将html标记替换为空字符串
String desc = Regex.Replace(drJob["Description"].ToString(), @"<[^>]*>", String.Empty);

答案 2 :(得分:0)

您可以使用正则表达式“&lt; [^&gt;] +&gt;”

简单地使用替换方法

答案 3 :(得分:0)

using System.Text.RegularExpressions;

    private void button1_Click(object sender, EventArgs e)
    {
        string sauce = htm.Text; // htm = your html box
        Regex myRegex = new Regex(@"(?<=^|>)[^><]+?(?=<|$)", RegexOptions.Compiled);
        foreach (Match iMatch in myRegex.Matches(sauce))
        {
            txt.AppendText(Environment.NewLine + iMatch.Value); //txt = your destination box
        }

    }

如果您需要更多说明,请与我们联系。

[编辑:]请注意,这不是一个干净的功能,所以添加一行来清理空格或换行符。但实际从中间标签获取文本应该可以正常工作。如果你想节省空间 - 使用正则表达式,看看这是否适合你。虽然发布关于正则表达不干净的人是对的,但可能还有其他方法;从html中分离单一类型的标记时,正则表达式通常更好。 (我用雨量计来解析东西而且没有任何问题)