使用FileHelpers,我的C#应用程序读取CSV然后处理数据。处理完成后,数据将写为另一个CSV。输出CSV在某些字段中有换行符。如何避免这些?
答案 0 :(得分:1)
FileHelpers在写入CSV之前不会自动删除换行符。使用custom converter很容易。这是一个有效的例子。
[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;
}
}
答案 1 :(得分:0)
我使用了建议here的Log4Net解决方案,但它运行起来却不是最快的。也就是说,我用它来写几十万行...
答案 2 :(得分:-2)
CSV是基于其性质的。所以你不能在数据中有真正的换行符。您可以使用文字“\ n”(在文件中将字面表示为\ n)进行编码,然后在稍后解析文件时,您需要将文字替换为实际的换行符。