C# 在写入csv c时向字符串添加双引号#
我正在尝试将数据写入csv文件。我希望数据在记事本中打开时以双引号显示,但在csv中打开文件时不应显示任何双引号 下面是我正在使用的代码,但没有给出结果C# 在写入csv c时向字符串添加双引号#,c#,.net,oop,io,csvhelper,C#,.net,Oop,Io,Csvhelper,我正在尝试将数据写入csv文件。我希望数据在记事本中打开时以双引号显示,但在csv中打开文件时不应显示任何双引号 下面是我正在使用的代码,但没有给出结果 csvFile.WriteField("\"" +data.FirstName == null ? string.Empty : data.FirstName + "\""); 有人能帮我解决这个问题吗?我将firstName赋值给一个稍后将要传递的变量,使代码更具可读性。我使用了一个字符串转义来为最终结果添加一个引号。现在可以将其传递给Wr
csvFile.WriteField("\"" +data.FirstName == null ? string.Empty : data.FirstName + "\"");
有人能帮我解决这个问题吗?我将firstName赋值给一个稍后将要传递的变量,使代码更具可读性。我使用了一个字符串转义来为最终结果添加一个引号。现在可以将其传递给WriteField方法 有关字符串转义的更多信息,请参见和
问题是你正试图反对CsvHelper的引用。根据规格
void Main()
{
var记录=新列表
{
新Foo{Id=1,Name=“one”},
新Foo{Id=2,Name=“two”},
};
使用(var writer=new StringWriter())
使用(var csv=new CsvWriter(writer,CultureInfo.InvariantCulture))
{
csv.Configuration.ShouldQuote=(字段、上下文)=>true;
csv.书面记录(记录);
writer.ToString().Dump();
}
}
公开课Foo
{
公共int Id{get;set;}
公共字符串名称{get;set;}
}
如果您仍然想自己添加双引号,可以关闭CsvHelper的双引号
csv.Configuration.ShouldQuote=(字段,上下文)=>false;
正在中断对版本20.0.0及更高版本的更改
您需要创建CsvConfiguration
,在初始化时设置ShouldQuote
,然后将其传递给CsvWriter
void Main()
{
var记录=新列表
{
新Foo{Id=1,Name=“one”},
新Foo{Id=2,Name=“two”},
};
var config=新的CSV配置(CultureInfo.InvariantCulture)
{
ShouldQuote=(字段,上下文)=>true
};
使用(var writer=new StringWriter())
使用(var csv=new CsvWriter(writer,config))
{
csv.书面记录(记录);
writer.ToString().Dump();
}
}
公开课Foo
{
公共int Id{get;set;}
公共字符串名称{get;set;}
}
似乎有一个配置选项和一个覆盖WriteField
以强制引用。使用其中一个。还有很多其他的答案(比如)谈论如何将引号转换成字符串。但我认为你的问题是如何使用三元运算符a?b:c
。尝试在其周围添加括号,例如:“\”+(data.FirstName==null?string.Empty:data.FirstName)+“\”
。操作顺序可能是检查“\”“+数据。Firstname==null
,但从来都不是这样,因为生成的字符串中至少有一个双引号。感谢您的响应。我尝试了您的解决方案,但仍然不起作用。我在记事本中得到的结果是“测试”,它有3个双引号,在csv文件中,它显示为名字的“test”,非常感谢。在我的案例中,以下行适用于我“csv.Configuration.ShouldQuote=(字段,上下文)=>true”;这给了我以下错误:属性或索引器“IWriterConfiguration.ShouldQuote”无法分配到--它是只读的
版本20.0.0发生了重大更改。我添加了一个带有更改的更新。
var firstName = data.FirstName == null ? string.Empty : data.FirstName;
var firstNameWithQuoutes = $@"""{firstName}""";
"aaa","b CRLF
bb","ccc" CRLF
zzz,yyy,xxx
"aaa","b""bb","ccc"