子串而不破坏html c#

时间:2011-05-25 02:29:01

标签: c# html regex substring

大家好,我正在尝试在wysiwyg编辑器中输入一个描述并获取它的子串。

This is some <span style="font-weight:bold;">text</span>

如果我只是子串并添加...

,我想限制一些描述而不破坏html

它打破了html标签..

我试过了:

string HtmlSubstring(string html, int maxlength)
    {
        string htmltag = "</?\\w+((\\s+\\w+(\\s*=\\s*(?:\".*?\"|'.*?'|[^'\">\\s]+))?)+\\s*|\\s*)/?>";
        string emptytags = "<(\\w+)((\\s+\\w+(\\s*=\\s*(?:\".*?\"|'.*?'|[^'\">\\s]+))?)+\\s*|\\s*)/?></\\1>";

        var expression = new Regex(string.Format("({0})|(.?)", htmltag));
        MatchCollection matches = expression.Matches(html);
        int i = 0;

        StringBuilder content = new StringBuilder();
        foreach (Match match in matches)
        {
            if (match.Value.Length == 1 && i < maxlength)
            {
                content.Append(match.Value);
                i++;
            }
            else if (match.Value.Length > 1)
            {
                content.Append(match.Value);
            }
        }
        return Regex.Replace(content.ToString(), emptytags, string.Empty);
    }

但它并不能让我在那里!

1 个答案:

答案 0 :(得分:2)

使用HTML Agility Pack加载HTML,然后获取InnerText。

var document = new HtmlDocument();
document.LoadHtml("...");
document.DocumentNode.InnerText;

另见C#: HtmlAgilityPack extract inner text