Codegolf:使用C#中的最小代码将csv转换为HTML表

NoC*_*ier 0 c# csv code-golf

我正在为我自己的个人工具包lib添加一个函数来进行简单的CSV到HTML表转换.

我想在C#中使用尽可能最小的代码来完成此操作,并且它需要能够处理超过~500mb的CSV文件.

到目前为止,我的两个竞争者是

  • 通过分隔符将csv拆分为数组并构建HTML输出

  • 使用表格标记的搜索替换分隔符

假设已经处理了文件/读取/磁盘操作...即,我将包含所述CSV内容的字符串传递给此函数.输出将由直接简单的HTML样式标记组成,是的,数据可能在其中有杂散逗号和中断.

更新: 有些人问.如果有帮助,100%我处理的CSV直接来自excel.

示例字符串:

a1,b1,c1\r\n
a2,b2,c2\r\n

Mat*_*ted 6

将所有行读入内存

    var lines =File.ReadAllLines(args[0]);
    using (var outfs = File.AppendText(args[1]))
    {
        outfs.Write("<html><body><table>");
        foreach (var line in lines)
            outfs.Write("<tr><td>" + string.Join("</td><td>", line.Split(',')) + "</td></tr>");
        outfs.Write("</table></body></html>");
    }
Run Code Online (Sandbox Code Playgroud)

或一次读一行

    using (var inFs = File.OpenText(args[0]))
    using (var outfs = File.AppendText(args[1]))
    {
        outfs.Write("<html><body><table>");
        while (!inFs.EndOfStream )
            outfs.Write("<tr><td>" + string.Join("</td><td>", inFs.ReadLine().Split(',')) + "</td></tr>");
        outfs.Write("</table></body></html>");
    }
Run Code Online (Sandbox Code Playgroud)

... @Jimmy ...我使用LINQ创建了一个扩展版本.这是亮点...(线读的懒惰eval)

    using (var lp = args[0].Load())
        lp.Select(l => "<tr><td>" + string.Join("</td><td>", l.Split(',')) + "</td></tr>")
        .Write("<html><body><table>", "</table></body></html>", args[1]);
Run Code Online (Sandbox Code Playgroud)