使用CsvHelper时如何忽略CSV文件中的末尾逗号?
解决CsvHelper识别CSV末尾逗号导致列数错误的问题
你遇到的问题可以通过CsvHelper配置中的IgnoreTrailingDelimiters属性直接解决,开启这个配置后,解析器会忽略每行末尾的分隔符,不会将其识别为额外的空列。
修改你的配置代码如下:
string input = """ headerColumn1,headerColumn2, dataValue1,dataValue2, """; var encoding = Encoding.UTF8; var ms = new MemoryStream(encoding.GetBytes(input)); var streamReader = new StreamReader(ms); // 配置中添加 IgnoreTrailingDelimiters = true var config = new CsvConfiguration(CultureInfo.InvariantCulture) { HasHeaderRecord = true, IgnoreTrailingDelimiters = true }; using var csvReader = new CsvReader(streamReader, config); csvReader.Read(); var numberOfColumns = csvReader.Parser.Record.Length; Console.WriteLine( $"number of detected columns: {numberOfColumns}" ); // 此时输出:number of detected columns: 2
这个配置项的作用是告诉CsvHelper的解析器,当行的末尾出现分隔符(这里是逗号)时,不要将其视为一个新列的起始,直接忽略掉,这样就能正确识别出实际的列数。
内容的提问来源于stack exchange,提问作者me.at.coding
相关产品推荐
相关产品推荐

