![]() |
1
7
我同意B计划(我不同意这是笨拙的)。 imho,最好的方法是询问用户需要从哪种电子邮件客户端导出。因此,您可以标识分隔符。您自己已经发现,尽管不同的客户机使用不同的分隔符,但是一个客户机总是使用相同的分隔符(除非他们决定使用不向后兼容的版本),因此,创建一个接受分隔符作为参数并相应地解析输入的面向对象类并不困难。(不管分隔符是什么,逻辑应该保持几乎相同。 即使解析每种类型的导出文件时的逻辑有很大的不同,似乎您可以创建一个抽象的基类,它包含所有公共功能和派生类,这些类只覆盖特定于客户端的功能。 即使使用自定义库(如filehelpers),也应该能够通过传递分隔符类型来完成它。 我认为您不应该依赖可能的分隔符的相对计数来确定实际的分隔符是什么(如计划A所示)。 编辑: 另一个刚想到的选择是提供类似于MS Excel的选项界面。您可以选择分隔符,并实时预览如何根据所选内容分析数据。 |
![]() |
2
2
我先看看比赛是如何进行的。
谷歌:
“我们支持以csv文件格式导入联系人(逗号分隔值)。为了获得最佳结果,请使用由Outlook、Outlook Express、Yahoo!生成的csv文件。或者Hotmail。对于Apple通讯簿,有一个名为“a to g”的实用程序。
实时邮件/hotmail: 它们支持您的选项B,并支持: Microsoft Outlook(使用csv)、Outlook Express(使用csv)、Windows联系人、Windows Live Hotmail、Yahoo!邮件(使用outlook csv格式和逗号分隔)、gmail(使用outlook csv格式) 脸谱网: 他们允许你输入你的电子邮件地址,如果他们知道(雅虎、Gmail、Hotmail等),他们会要求你输入密码,并自动检索你的联系人。(选项D)如果他们不支持您的电子邮件提供商,您仍然可以从Outlook或其他格式(选项B的类型)上载csv文件。 我想Facebook的版本真的很酷。但是,如果这太多,您可以选择选项A来获取支持的csv格式(您必须检查不同的csv文件),否则,如果您不识别它,请提示用户了解您识别的不同列的含义。 |
![]() |
3
1
如果需要更改要导入的csv文件的分隔符,请使用以下代码:
|
![]() |
4
0
创建一个类似“icontactimporter”的接口,它有一个方法“import(file/whatever…)”。然后,对于每种类型的联系人文件,创建实现导入方法的类来处理每种格式。 如果有某种方法可以告诉用户正在上载哪种类型的文件,您可能不需要询问用户。 对于实际的实现,我将找到一个现有的csv库,并为每个格式相应地配置它。我工作的人用过 LINQtoCSV 但我不确定是否有更好的选择。 |
![]() |
5
0
B计划最好, 另一种方法是查看整个文件并计算字符的出现次数 这可以通过streamreader类一行一行地完成,然后您可以将生成的字符串拆分为一个数组。 您需要将字符限制为非字母数字a-z 0-9“,并查看字符 然后可以确定分隔符。还要注意,如果某个字段为空,则某些程序不会导出“cell”,例如MS Office 2007 |
![]() |
6
0
A计划似乎是明智的。我不认为会有太多带有逗号或制表符的字段名(如果有的话)。所以统计结果准确率为90%。如果统计数据足够接近(例如15个逗号和12个制表符),您可以做的是:
除此之外,你还说“名字”和“姓氏”字段以及电子邮件和电子邮件等内容会有问题。你需要一个很好的设计模式。为了规范化数据的真正利益,我将存储名字和姓氏(并将它们合并到UI中)。因此:
无论如何,我相信你会明白的。将字段转换为可识别字段的一组转换。 |
![]() |
user1946932 · .Net正则表达式在所有字符前添加空格 5 月前 |
![]() |
TSDrake · 发布ASP。没有特定文件夹的.NET应用程序 6 月前 |
![]() |
Vengat Ramanan · 用户登录Asp时隐藏导航和页脚。网络核心 10 月前 |
![]() |
ramamoorthy_villi · 输入验证错误外键字段 10 月前 |
![]() |
Enderbyte09 · ASP。NET Core绝对拒绝在其他端口上托管 11 月前 |