【问题标题】:Multi delimiter on the same row同一行上的多个分隔符
【发布时间】:2015-02-17 15:18:13
【问题描述】:

我会使用 FileHelpers 来导入这样的文件,

状态、用户 ID、自定义 1、自定义 2 Active,000001,"公司部门 "A"", "HRO" 活跃,000002,”公司总部”, “HRO”

但我找不到如何指定一个字段分隔符,而该分隔符又可能包含分隔符本身,有人可以帮忙吗?

【问题讨论】:

  • 这就是引号的用途。在带引号的文本字段中,分隔符应该被忽略(并且引号必须被转义)。严格来说,只有在以下情况下才需要引号:1)文本包含分隔符或 2)文本包含换行符。请注意,使用 \t 而不是逗号会减少您在文本中使用分隔符的机会。

标签: c# filehelpers fileparsing


【解决方案1】:

在另一个线程中,有人建议使用(可能相当新的)Microsoft.VisualBasic.FileIO.TextFieldParser(参见FileHelpers: How to handle quoted fields when reading file)。 我在使用 Magento 生成的文件时遇到了同样的问题,所以我尝试了这个类,它正确处理了上面提到的格式(带引号的文本字段中的双引号)。

作为 C# 用户,不用担心 VB,只需参考标准 Microsoft.VisualBasic 程序集即可。
顺便说一句,正如另一位用户所建议的那样,我不同意所讨论的格式无效。相反,我在工作中多次看到它,据我所知,没有 CSV 格式标准这样的。最后你只需要处理一些软件的结果......;-)

【讨论】:

    【解决方案2】:

    您可能应该看看CSVHelper 这将帮助您做到这一点

    【讨论】:

    • 干得好,虽然还有一点问题,因为字段 [Company Division "A"] 被导入为 [Company Division A""],但至少正确划分它们。谢谢
    • 我想知道当原人说这对他有帮助时,谁投了反对票……
    • 它可能被否决了,因为在 FileHelpers 上提出了一个完全不同的引擎。但是,除了手动解析 BeforeRead 或 INotifyRead 事件之外,在 FileHelpers 中没有简单的方法可以做到这一点。上面的布局格式无效,源创建的文件不正确,但能否更改源存疑。
    猜你喜欢
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 2013-12-03
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多