【问题标题】:Substring without breaking html c#不破坏html c#的子字符串
【发布时间】:2011-05-25 02:29:00
【问题描述】:

大家好,我正在尝试获取已在所见即所得编辑器中输入的描述并获取它的子字符串..

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);
    }

但它并没有完全让我到达那里!

【问题讨论】:

  • 你能保证输入是 HTML 编码的吗?意思是,如果用户输入&amp;gt;,它是否已经被翻译成&amp;gt;
  • 查看这个问题了解如何做 html 正则表达式:stackoverflow.com/questions/1732348/…

标签: c# html regex substring


【解决方案1】:

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

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

另见C#: HtmlAgilityPack extract inner text

【讨论】:

    猜你喜欢
    • 2011-04-29
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    • 2011-07-10
    • 2017-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多