Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#制表/缩进HTML_C#_Html_Regex_Indentation - Fatal编程技术网

C#制表/缩进HTML

C#制表/缩进HTML,c#,html,regex,indentation,C#,Html,Regex,Indentation,C#中是否有一个工具/库/函数,可以在不验证或整理输入的情况下对生成的html代码进行制表或缩进 编辑: 从JavaScript文本编辑器缩进生成的HTML代码,包括但不限于TinyMCE。没有HtmlTextWriter。不能期望使用有效的XML/XHTML/HTML代码 要求: 在打开和关闭标记之前和之后添加新行 缩进标记内的内容(制表符或4个空格) 将一条长行(有N个单词)分成多个缩进行 即使输入不是有效的HTML,也不要更改它。仅制表符/缩进和拆分长线 到目前为止,我有: priva

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;
}
私有字符串格式HTML(字符串输入)
{
//开场白
正则表达式r=新正则表达式(“”);
string retVal=string.Empty;
retVal=r.Replace(输入,string.Format(“$&{0}\t”,Environment.NewLine));
//结束标记
r=新正则表达式(“]*>”);
retVal=r.Replace(retVal,string.Format(“{0}$&{0}”,Environment.NewLine));
//自动关闭标签
r=新正则表达式(“/]*/>”);
retVal=r.Replace(retVal,string.Format(“$&{0}”,Environment.NewLine));
返回返回;
}

这可能有点冗长,但这是我脑子里唯一能想到的事情

使用sgml转换器将html转换为xml,即html或xml


然后,您可以向XmlTextWriter写入内容,并在设置中指定需要缩进的内容。

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

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

只有当已经存在空白时,才应插入换行符。

能否提供输入样本和预期输出样本?基于web,但提供C源代码,您可以将其集成到另一个应用程序中。这根本不会缩进代码。:)如果输入的HTML也是有效的XML,则可以使用具有适当属性的XmlWriter。与其对输入进行任何更改,还不如只缩进HTML标记内的内容?在这种情况下,您是否查看过HTML Tidy,在引用的库“libtidy.dll”中有一个.net绑定,它使Windows Server 2008 R2 SP1 64位崩溃。非常不稳定(尽管如此,当查看上面的链接时,它也不会缩进代码。Tidy html的文档显示它可以缩进代码,因此不确定那里发生了什么,至于崩溃,最有可能的原因是源代码是针对我过去遇到过问题的任何源代码编译的。请将其设置为x86或x64。
<span style="color:red">
    test
</span>
<span>
    ing
</span>