gpt4 book ai didi

c# - 将 CSV 文件导入 C#

转载 作者:行者123 更新时间:2023-11-30 19:22:34 24 4
gpt4 key购买 nike

我正在构建一个网站,其中一项要求是让用户从他们的电子邮件客户端导出他们的联系人以将他们导入该网站。

因为每个电子邮件客户端以略有不同的格式导出他们的联系人,这让我头疼,必须找到最好的方法来处理它。因为我不知道字段是什么,或者分隔符是什么。

我只想针对主要的电子邮件客户端/地址簿(Outlook、Apple Mail、Entourage、Thunderbird)。所有这些都具有完全不同的格式。 Entourage 使用制表符作为分隔符,其余使用逗号等。我只需要提取电子邮件地址和(如果有的话)姓名。由于一些客户的名字/姓氏有单独的字段,因此名称变得更加棘手。

使用 FileHelpers将是理想的,但似乎我需要先了解 csv 的结构,然后才能找到解决方案。如果可能的话,我宁愿不去编写自己的 csv 解析器。

这是我对集体 hive 思维的看法:

计划A

  • 读取 csv 文件的第一行(所有格式的第一行都有一个标题)并计算制表符与逗号的数量。由此确定分隔符。
  • 使用某种类型的 csv 阅读器,例如 Lumenworks为我提供文件其余部分的基本 csv 阅读能力。
  • 对每个字段执行正则表达式匹配以确定电子邮件列。
  • 不知道如何找出用户的姓名...

B计划

  • 提示用户电子邮件客户端的类型,并为每个不同的客户端单独编码 <- 看起来真的很笨拙。

计划C

....使用/购买已经这样做的现有组件?! (我肯定找不到!!)

想法?

最佳答案

我会选择 B 计划(我不同意它很笨重)。

恕我直言,最好的方法是询问用户他/她需要从哪种电子邮件客户端导出。因此,您可以识别分隔符。您自己已经发现,尽管不同的客户端使用不同的分隔符,但单个客户端将始终使用相同的分隔符(除非他们决定推出非向后兼容的版本)因此,创建面向对象的类应该不难接受分隔符作为参数并相应地解析输入(无论分隔符如何,逻辑应该保持几乎相同)。

即使解析每种类型的导出文件的逻辑有很大不同,您似乎也可以创建一个抽象基类,其中包含所有通用功能和仅覆盖客户端特定功能的派生类。

即使您使用 FileHelpers 等自定义库,您也应该能够通过传递分隔符的类型来完成它。

我觉得您不应该依赖可能分隔符的相对计数来确定实际分隔符是什么(如计划 A)。

编辑:刚刚想到的另一个选择是提供一种类似于 MS Excel 的选项界面。您可以选择分隔符,并实时预览根据选择解析数据的方式。

关于c# - 将 CSV 文件导入 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/938291/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com