Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用差异模式序列处理CSV的最佳方法是什么?_C#_Parsing_Csv - Fatal编程技术网

C# 使用差异模式序列处理CSV的最佳方法是什么?

C# 使用差异模式序列处理CSV的最佳方法是什么?,c#,parsing,csv,C#,Parsing,Csv,我正在写一个程序,解析.txt文件,每行使用逗号delimeter。代码是C#。文件是.txt,db是mssql 通常的顺序是 date_aired, time_aired_start, time_aired_end, duration_aired, movie_name but 找到按此顺序显示的某些行 date_aired, time_aired_start, duration_aired, movie_name. 这并没有问题,因为我可以通过将time\u aired\

我正在写一个程序,解析.txt文件,每行使用逗号delimeter。代码是C#。文件是
.txt
,db是mssql

通常的顺序是

date_aired, 
time_aired_start, 
time_aired_end, 
duration_aired, 
movie_name but 
找到按此顺序显示的某些行

date_aired, 
time_aired_start, 
duration_aired, 
movie_name.
这并没有问题,因为我可以通过将time\u aired\u start与duration相加来获得time\u aired\u end,但我再次发现还有另一个类似的序列

date_aired, 
time_aired_start, 
date_aired, 
time_aired_end, 
movie_name
我的意思是,有些行在第一个模式中连接,而有些行在第二个模式中,或者在一个txt文件中的第三个模式中。我无法确定在解析每列时必须使用哪些代码,并按索引将其放入对象中,如下面的代码所示:

AirData aData= new AirData();
aData.dateAir = txtParse[0]
aData.timeStart = txtParse[1]
aData.timeEnd = txtParse[2]
aData.duration = txtParse[3] ...etc.
所以我的问题是,处理这种情况的最好方法是什么?一些机器已经生成了文本文件,我无法更正。我的工作是解析它并将其存储在数据库中,以便生成报告

我的想法是将它放在try-catch中,每次它抛出一个异常时,它都会尝试执行第二个模式,如果抛出另一个异常,则执行第三个模式。那好吗?或者有什么建议

更新:

一些实际数据。 这里的列与上面的示例不同,因为我只是将其设置为快捷方式

模式1:11个字段

01/01/2013,
00:00:00;00,
00:00:54;19,
00:00:54:20,
01/01/2013,
00:00:00;00,
00:00:54;19,
00:00:54:20,
Seg 4 HAPPY NEW YEAR WISHES.mp4,
Aired,
5D189F06-886D-40B1-AC70-609C2CA5E774
模式2:9字段-这很容易被发现,因为我可以检查数组长度是否小于11

01/28/2013,
21:38:23;11,
00:01:00:04,
01/28/2013,21:38:23;11,
00:01:00:04,
ADXEFRF2-0243.mov,
Aired,
9E74C08C-8E30-48A1-A743-44ACC93E183E
但我的问题是:

模式3-也有11个字段,但顺序不同

01/28/2013,
21:39:23;15,
00:08:03:01,
01/28/2013,
21:39:23;15,
01/28/2013,
21:47:26;13,
00:08:03:01,
THE IMPOSTOR With Eng Subs Ep 11-5.mp4,
Aired,
895F4F16-5624-4A2C-A5E0-D3BF1BA57B86

您可以使用一些正则表达式&在解析文件时测试每个字段


案例2很容易被发现,因为它只有4列,而不是5列。案例1和案例3在不知道播放时间和播放持续时间格式的情况下很难区分(例如01:30是1小时30分、1分钟30秒、凌晨1点30分或下午1点30分)

文本文件是否具有可动态用于确定列顺序的标题?使用异常作为流控制被视为不好的做法,因此您应该找到另一种方法。您是否可以使用某种模式匹配来决定这3种格式?您能以这些格式显示一些实际数据吗?不,txt文件没有标题。