C# 制表符/缩进 HTML

标签 c# html regex indentation

C# 中是否有工具/库/函数可以在不验证或整理输入的情况下对生成的 html 代码进行制表符或缩进?

编辑:

缩进从 JavaScript 文本编辑器(包括但不限于 TinyMCE)生成的 HTML 代码。没有 HtmlTextWriter。不能期望有效的 XML/XHTML/HTML 代码。

要求:

  • 在开始和结束标记之前和之后添加新行。
  • 缩进标签内的内容(制表符或 4 个空格)。
  • 将长行(有 N 个单词)拆分为多个缩进行。
  • 即使输入不是有效的 HTML,也不要更改它。仅制表符/缩进和分割长行。

到目前为止,我已经:

private string FormatHtml(string input)
{
    //Opening tags
    Regex r = new Regex("<([a-z]+) *[^/]*?>");
    string retVal = string.Empty;
    retVal = r.Replace(input, string.Format("$&{0}\t", Environment.NewLine));

    //Closing tags
    r = new Regex("</[^>]*>");
    retVal = r.Replace(retVal, string.Format("{0}$&{0}", Environment.NewLine));

    //Self closing tags
    r = new Regex("<[^>/]*/>");
    retVal = r.Replace(retVal, string.Format("$&{0}", Environment.NewLine));

    return retVal;
}

最佳答案

您可能需要重新考虑您的方法,插入换行符(和缩进)可能会导致严重的空白问题。

<span style="color:red">test</span><span>ing</span>

上面的 html 的显示效果与您要转换的 html 不同,渲染的 html 中会有额外的空格:testingtest ing

<span style="color:red">
    test
</span>
<span>
    ing
</span>

只有在已经存在空格的情况下才应插入换行符。

关于C# 制表符/缩进 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9230793/

相关文章:

html - :hover background replacement on a empty a tag not working

html - 在IE7表中无法正确查看的电子邮件模板,TD

php - 如何编写选择查询以在 php MySQL 中使用外键和连接从 5 个表中获取数据?

c# - 在特定符号前后插入(单个)空格

c# - 'WebSupergoo.ABCpdf7.Internal.NDoc' 的类型初始值设定项抛出异常

c# - StringDictionary 作为常见的静态列表?

c++ - 如何在字符串的反面使用正则表达式?

javascript - 使用正则表达式匹配 8 或 9 位数字

c# - 如何从使用 EPPLUS 生成的 excel 中获取列

c# - 比较 XML 文件(属性、节点和文本)