1

我一直在使用一些代码作为输入 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>它仍然会输出具有正确行号的行和带有&nbsp;

更新:按照建议的答案,我尝试将我的功能更改为:

    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";

但是我仍然看不到表格中的空行。

4

1 回答 1

1

StringSplitOptions.RemoveEmptyEntries在换行符上拆分时删除空条目。如果您不想删除空条目,请不要使用此选项。

于 2013-10-14T19:17:52.427 回答