2013-04-23 109 views
0

我有一个字符串,它使数据更像csv格式。从文本文件中提取csv种类的数据

&stamp;field1;field2;field3;field4;&event 
10:44:00.6100;0.000;0.000;0.000;0.000; 10:44:00.7100;23.2;0.230;411.2;0.000; 10:44:00.8100;0.000;0.000;1.022;0.000;  10:44:00.9100;8.000;0.000;232.3;0.000; 
10:44:01.2100;0.000;0.000;0.000;0.000; 10:44:01.3100;23.2;0.230;411.2;0.000; 10:44:01.5100;0.000;0.000;1.022;0.000; 10:44:01.7100;8.000;0.000;232.3;0.000; 

我想反序列化这些数据。我该如何去做呢?请提供一些帮助或建议。 Tnxs

+0

这是什么内容?你想对数据做什么?你确定你不只是想在Excel或类似的应用程序中打开它吗? – Kjartan 2013-04-23 15:18:23

回答

0

这会给你一个字符串列表“分裂”在每一个;焦炭。你会想修剪和解析后的值。希望这有助于

var stringOfData = "0:44:00.6100;0.000;0.000;0.000;0.000;  10:44:00.7100;23.2;0.230;411.2;0.000; 10:44:00.8100;0.000;0.000;1.022;0.000;  10:44:00.9100;8.000;0.000;232.3;0.000;"; 
List<string> parsed = new List<string>(); 
parsed.AddRange(stringOfData.Split(';')); 
+0

Thnxs的建议,但任何方式反序列化它在某些特定的格式,因为通过使用拆分我必须使用循环,数组,使其按顺序...... – user1260967 2013-04-23 14:53:31

+0

你可以更具体到你的意思是“在某些特定格式?”你能举一个例子说明你得到了什么,你想从中得到什么,所以我可以更好地回答你的问题 – workabyte 2013-04-23 15:26:04

0
string line = String.Empty; 
string[] parts = null; 
using (StreamReader sr = new StreamReader(new FileStream(@"C:\yourfile.csv", 
              FileMode.Open))) 
{ 
    while ((line = sr.ReadLine()) != null) 
    { 
     parts = line.Split(new [] { ';' }); 
     //Do whatever you want to do with the array of values here 
    } 
} 

至于问题的反序列化部分;你需要指定你想要的格式类型。如果您只想要一组想要循环的数字,您可以将每个值都添加到一个通用列表中。

如果你想要一个特定的格式,你可以创建一个包含每个值的字段的类,并使用这些值填充该类的通用列表。