我一直在使用一些代码作为输入 HTML,然后更改 a 中的代码<pre> ... </pre>
并将其放入表格中。这是代码:
public static string FormatCode(this string content)
{
var data1 = content
.Split(new[] { "<pre>", "</pre>" }, StringSplitOptions.None);
var data2 = data1
.Select((s, index) =>
{
string s1 = index % 2 == 1 ? string.Format("{0}{2}{1}",
"<table class='code'>", "</table>", SplitJoin(s)) : s;
return s1;
});
var data3 = data2.Where(s => !string.IsNullOrEmpty(s));
var data4 = string.Join("\n", data3);
return data4;
}
private static string SplitJoin(string content)
{
IEnumerable<String> code =
content.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries)
.Select((line, index) =>
string.Format("<tr><td>{0}</td><td><pre><code>{1}</code></pre></td></tr>\n",
(index + 1).ToString("D2"), HttpUtility.HtmlEncode(line)));
return string.Join("", code) + "\n";
}
如果我的 HTML 是这样的:
<p>xxx</p><pre>public enum XXX {
private String command1;
private String command2;
}
}</pre>
它将其转换为:
<table class="code"><tbody>
<tr><td>01</td><td><p>xxx</p></td></tr>
<tr><td>02</td><td><pre>public enum XXX {</pre></td></tr>
<tr><td>03</td><td><pre> private String command1;</pre></td></tr>
<tr><td>04</td><td><pre> private String command2;</pre></td></tr>
<tr><td>05</td><td><pre>}</pre></td></tr>
</tbody></table>
问题是 a 内的空行<pre>
不输出。有人可以通过告诉我如何更改代码来帮助我,以便当其中有一个空行时,
<pre>
它仍然会输出具有正确行号的行和带有
更新:按照建议的答案,我尝试将我的功能更改为:
IEnumerable<String> code =
// content.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries)
content.Split(new[] { '\n' }, StringSplitOptions.None)
.Select((line, index) =>
string.Format("<tr><td>{0}</td><td><pre><code>{1}</code></pre></td></tr>\n",
(index + 1).ToString("D2"), HttpUtility.HtmlEncode(line)));
return string.Join("", code) + "\n";
但是我仍然看不到表格中的空行。