【发布时间】:2012-03-03 02:24:12
【问题描述】:
C# 中是否有工具/库/函数可以在不验证或整理输入的情况下对生成的 html 代码进行制表符或缩进?
编辑:
缩进从 JavaScript 文本编辑器生成的 HTML 代码,包括但不限于 TinyMCE。没有 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;
}
【问题讨论】:
-
您能否提供输入样本和预期输出样本?
-
manoli.net/csharpformat 基于网络,但提供可以集成到另一个应用程序中的 C# 源代码。
-
那根本不缩进代码。 :)
-
如果输入的 HTML 也是有效的 XML,您可以使用带有适当 XmlWriterSettings 的 XmlWriter。
标签: c# html regex indentation