You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中移除WYSIWYG生成HTML表格空行的方法(Regex/HtmlAgilityPack)

移除HTML表格空行的C#解决方案

针对WYSIWYG编辑器生成的HTML表格存在空行的问题,下面提供两种可行的处理方案:

方法一:使用HtmlAgilityPack(推荐)

HtmlAgilityPack是专门的HTML解析库,能可靠处理复杂HTML结构,避免正则表达式的局限性。

  1. 首先安装NuGet包:
Install-Package HtmlAgilityPack
  1. 实现代码:
using HtmlAgilityPack;

public string RemoveEmptyTableRows(string htmlContent)
{
    var htmlDoc = new HtmlDocument();
    htmlDoc.LoadHtml(htmlContent);

    // 获取所有表格行节点
    var tableRows = htmlDoc.DocumentNode.SelectNodes("//tr");
    if (tableRows == null) return htmlContent;

    // 遍历行节点(转为List避免修改集合时的遍历异常)
    foreach (var row in tableRows.ToList())
    {
        // 获取当前行的所有单元格(td/th)
        var cells = row.SelectNodes(".//td|.//th");
        if (cells == null)
        {
            row.Remove();
            continue;
        }

        // 检查所有单元格是否为空(去除首尾空白后无内容)
        bool isEmptyRow = cells.All(cell => string.IsNullOrWhiteSpace(cell.InnerText.Trim()));
        
        if (isEmptyRow)
        {
            row.Remove();
        }
    }

    return htmlDoc.DocumentNode.OuterHtml;
}

该方法会自动识别包含空标签、空格、换行符的"伪空行",处理逻辑更严谨。

方法二:使用正则表达式(仅适用于简单场景)

如果你的HTML表格结构非常规整(空行仅包含空白字符或空<td>/<th>),可以用正则快速处理:

using System.Text.RegularExpressions;

public string RemoveEmptyRowsWithRegex(string htmlContent)
{
    // 匹配空行:<tr>内仅含空白字符或空的单元格标签
    var emptyRowPattern = @"<tr\b[^>]*>\s*(<td\b[^>]*>\s*</td>|<th\b[^>]*>\s*</th>)*\s*</tr>";
    return Regex.Replace(htmlContent, emptyRowPattern, "", RegexOptions.IgnoreCase | RegexOptions.Multiline);
}

注意:正则无法处理嵌套标签(比如单元格内有<span></span>这类空元素)的情况,复杂HTML场景下容易出现误判或漏判。

内容的提问来源于stack exchange,提问作者HieroTran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 12:50:17