【问题标题】:Writing/Parsing library for CSV with unknown number of columnsCSV 的写入/解析库,列数未知
【发布时间】:2013-04-02 11:12:29
【问题描述】:

我正在尝试听从大家的建议,并使用一个库来满足我的 CSV 编写/解析需求。但最推荐的FileHelpers 需要一个列映射类。但是,我只需要读取写入单行逗号分隔值,然后再将它们解析回来。我找不到以这种简单方式使用 FileHelpers 或其他库的方法。

例如,我将String testInput = "\"yoyo\",\"yaya\",\"te\"\"st\""; 作为输入,并希望将其解析为具有值yoyoyayate"stString[]

我还需要做相反的事情,将值写回字符串,如下所示"yoyo","yaya","te"st"

有谁知道可以执行此操作的库或我如何使用例如 FileHelpers 来执行此操作?

我真的不想做 xml,因为 xml 字段中涉及大量“垃圾”字符(带宽/存储限制)。

【问题讨论】:

    标签: c# parsing csv filehelpers


    【解决方案1】:

    CSV reader on code project 应该处理这个问题;只需关闭文件头并逐行使用new StringReader(line)

    【讨论】:

    • 这个库也可以将数组写入 csv 吗?
    • @David 不确定,但请参阅我对 Vyktor 帖子的评论; CSV 比 容易得多
    • 谢谢,我会接受这个答案,因为 Vyctor 建议的 TextFieldParser 显然很慢。
    【解决方案2】:

    Microsoft.VisualBasic.FileIO.TextFieldParser 应该可以完成这项工作,ReadFields method 定义为:

    读取当前行的所有字段,将它们作为字符串数组返回,并将光标移至包含数据的下一行。

    我找到了很好的例子here

    至于编写 CSV,我会使用在 stackoverflow 上找到的不同方法。这似乎是不需要导入 3rd 方扩展的最简单方法。

    【讨论】:

    • 谢谢,但我还需要一个作家来正确地将字段转换为 csv,所以这只是解决方案的一半。
    • @David 编写 CSV 比阅读它更容易 - 特别是如果您想要引用所有值(如本例所示)。将\" 替换为\"\" 并追加+前置\" - 工作完成。
    • @David 没有对你来说足够简单的 CSV 编写器类......但我添加了一个我找到的链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    • 2015-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-12
    • 2017-04-11
    相关资源
    最近更新 更多