3

使用 FileHelpers,我的 C# 应用程序读取 CSV,然后处理数据。处理后,数据将写入另一个 CSV。输出 CSV 在某些字段中有换行符。如何避免这些?

4

3 回答 3

1

FileHelpers 在写入 CSV 之前不会自动删除换行符。使用自定义转换器很容易做到。这是一个工作示例。

[DelimitedRecord(",")]
public partial class MyClass
{
    [FieldConverter(typeof(MyStringConverter))]
    [FieldQuoted('"')]
    public String Field1;
    [FieldConverter(typeof(MyStringConverter))]
    [FieldQuoted('"')]
    public String Field2;
}      

class Program
{
    private static void Main(string[] args)
    {
        var engine = new FileHelperEngine<MyClass>();
        var myClass1 = new MyClass();
        myClass1.Field1 = "Dear Sir,\n Blah blah blah";
        myClass1.Field2 = "Yours sincerely,\n George";
        var output = engine.WriteString(new MyClass[]{myClass1});
        Assert.AreEqual(@"""Dear Sir, Blah blah blah"",""Yours sincerely, George""" + Environment.NewLine, output);
    }
}

public class MyStringConverter : ConverterBase
{
    public override string FieldToString(object from)
    {
        string output = base.FieldToString(from);
        // remove any line breaks before outputting
        output = output.Replace("\n", "");
        output = output.Replace("\r", "");
        return output;
    }

    public override object StringToField(string from)
    {
        return from;
    }
}
于 2013-05-07T09:07:12.317 回答
0

我使用了此处建议的 Log4Net 解决方案,它可以工作,但不是最快的。也就是说,我用它来写几十万行......

于 2013-05-07T09:32:34.750 回答
-2

CSV 本质上是基于行的。因此,您的数据中不能有真正的换行符。您可以使用类似文字“\n”(在文件中按字面意思表示为 \n)对它们进行编码,然后在稍后解析文件时,您需要将文字替换为实际的换行符。

于 2013-05-03T19:47:41.087 回答