【问题标题】:Fetch csv kind of data from text file [duplicate]从文本文件中获取 csv 类型的数据 [重复]
【发布时间】:2013-04-16 20:03:58
【问题描述】:

我有一个字符串,它使数据更像 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;

我想反序列化这些数据。

【问题讨论】:

  • 这里的内容是什么?你想用这些数据做什么?您确定不只是想在 Excel 或类似的应用程序中打开它吗?
  • 如果数据除了使用分号而不是逗号之外与 CSV 类似,则使用允许您自定义分隔符的 CSV 解析器。如果它是一种更简单的格式,您可以在其中拆分分号,然后执行此操作。无论哪种方式,请参阅副本。

标签: c# serialization csv deserialization


【解决方案1】:

这会给你一个字符串列表“分裂”在每个 ;字符。您将需要修剪和解析之后的值。希望这会有所帮助

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(';'));

【讨论】:

  • Thnxs 的建议,但任何以某种特定格式反序列化它的方法,如使用 split 我必须使用循环、数组来使其按顺序排列......
  • 您能否更具体地说明“以某种特定格式”是什么意思?你能举例说明你得到了什么以及你想从中得到什么,这样我就可以更好地回答你的问题
【解决方案2】:
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
    }
}

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-12
    • 2014-07-11
    • 2013-01-31
    • 2013-07-05
    • 2021-01-27
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    相关资源
    最近更新 更多