我有一些csv数据:
"data1", "data2", "data2_1", "data3"
我正在使用csvHelper
来阅读数据。
当我读取数据并使用分隔符','
拆分时,我得到4条记录。
"data1",
"data2",
"data2_1",
"data3"
但我想要3条记录,因为我有3列
"data1",
"data2, data2_1",
"data3"
以下是我正在尝试的代码
var config = new CsvConfiguration() { HasHeaderRecord = false };
var stream = File.OpenRead(FilePath);
using (var csvReader = new CsvReader(new StreamReader(stream, Encoding.UTF8), config))
{
while (csvReader.Read()) {
var parser = csvReader.Parser;
var rowRecors = parser.RawRecord;
var splitedData = rowRecors.Split(',');
}
答案 0 :(得分:1)
您似乎正在使用此库:CsvHelper
您的文件数据引用意味着每个字段都用双引号括起来,原因是某些字段可以包含字段分隔符(逗号)。在这种情况下,您应该通知您的库您用于引用字段的字符是什么,这样当它在引号对中时它可以忽略字段分隔符的存在。
此库提供您已初始化的Configuration类 您只需将其添加到构造函数
var config = new CsvConfiguration()
{
HasHeaderRecord = false,
Quote = '"'
};
上的属性列表
答案 1 :(得分:0)
不要手动拆分而是使用lib函数
// By header name
var field = csv["HeaderName"];
// Gets field by position returning string
var field = csv.GetField( 0 );
// Gets field by position returning int
var field = csv.GetField<int>( 0 );
// Gets field by header name returning bool
var field = csv.GetField<bool>( "IsTrue" );
// Gets field by header name returning object
var field = csv.GetField( typeof( bool ), "IsTrue" );