【问题标题】:Upgrading from CsvHelper, fix breaking changes从 CsvHelper 升级,修复重大更改
【发布时间】:2021-01-19 14:05:49
【问题描述】:

如GitHub of CsvHelper project 所示,配置现在是只读的,因此我已将属性初始化移到构造函数中。还有一个属性现在不受支持:IgnoreQuotes。

新的对应参数是什么?

var config = new CsvConfiguration(CultureInfo.InvariantCulture)
                {
                    HasHeaderRecord = true,
                    BadDataFound = null,
                    Delimiter = ",",
                    Quote = '"',
                    
                    IgnoreQuotes = true

            };

【问题讨论】:

  • 来自Change log, IParserConfiguration.IgnoreQuotes 被简单地删除。它没有移动,也没有重命名,它已经消失了。您可能有一个简单的 minimal reproducible example ,一行 CSV 以前有效,现在无效
  • 但文档仍然显示属性 joshclose.github.io/CsvHelper/api/CsvHelper.Configuration/… 。这可能是 github 上的 2 个不错的报告。
  • 我会试试ParserMode。因为它是IParserConfiguration 中的唯一添加。那个样子有关。但是我没有看源码。
  • @DragandDrop 非常感谢,我会向他提出问题
  • 如果您想出解决方案,请回到这里,它可能对未来的读者有用。

标签: c# nuget-package csvhelper


【解决方案1】:

ParserModes 不是 IgnoreQuotes。从21.1.0 版本开始,共有 3 种模式。

  • RFC4180
  • 逃跑
  • 没有逃脱

RFC4180 将像“规范”所说的那样对待字段,并期望在包含分隔符、换行符或双引号的字段周围加上双引号。如果字段中有双引号,则需要用双引号对其进行转义(前面)。

Escape 将仅使用转义字符并忽略转义后的字符。

NoEscape 将忽略双引号和转义字符。这意味着字段不能包含定界符、双引号或换行符,因为无法转义它们。

您可以设置分隔符(字符串)、引号(char)、转义符(char)和换行符(字符串)。

【讨论】:

    猜你喜欢
    • 2022-07-28
    • 2016-02-02
    • 2013-10-25
    • 2010-10-04
    • 2023-03-29
    • 2014-10-01
    • 2011-03-24
    • 1970-01-01
    • 2021-03-21
    相关资源
    最近更新 更多