使用CsvHelper自动检测分隔符后,如何获取实际使用的分隔符?
获取CsvHelper自动检测到的实际分隔符
- 问题核心:启用CsvHelper的分隔符自动检测后,
csvReader.Configuration.Delimiter仍返回默认值,无法获取实际使用的分隔符。 - 解决方案:访问
csvReader.Context.Parser.Delimiter属性,该属性会保存自动检测后Parser实际使用的分隔符。
示例代码:
using (var streamReader = new StreamReader("target.csv")) using (var csvReader = new CsvReader(streamReader, CultureInfo.InvariantCulture)) { // 开启分隔符自动检测 csvReader.Configuration.DetectDelimiter = true; // 执行读取操作(触发分隔符检测) csvReader.Read(); csvReader.ReadHeader(); // 获取实际使用的分隔符 string actualDelimiter = csvReader.Context.Parser.Delimiter; }
原因说明
CsvHelper的分隔符自动检测逻辑是在Parser实例中临时生效的,不会修改全局Configuration对象里的默认分隔符值。因此直接访问Configuration.Delimiter只会拿到初始设置的默认值,而Context.Parser.Delimiter才是解析时实际使用的分隔符。
内容的提问来源于stack exchange,提问作者Chris W
相关产品推荐
相关产品推荐

