2016-06-09 60 views
-3

你好我是C#的新手,我必须解析格式化的文本文件,其中包含如下的数据。如何解析c#中的txt文件

 
H1|57535     |65644474|  243.34 
D1|671690160540  |FedEx Gnd |Ground   |Parcel |06082016 
D2|FCREADHCU3  | 10||||||  23.01 
H1|57521     |65642336|  923.31 
D1|671690161010  |FedEx Gnd |Ground   |Parcel |06082016 
D2|PS121B   |  1|  0.00 
H1|57521     |65642336|  923.31 
D1|671690161031  |FedEx Gnd |Ground   |Parcel |06082016 
D2|PS121B   |  1|  0.00 
H1|57521     |65642336|  923.31 
D1|671690161020  |FedEx Gnd |Ground   |Parcel |06082016 
D2|PS121B   |  1|  0.00 
snipping     

如何解析C#中的文本文件。帮助表示赞赏。

+1

执行谷歌搜索 – Gwasshoppa

+0

简要查看您的数据,有3种不同的固定长度字段行,查看前两个字符以确定使用哪种格式。您将不得不计数字符以确定每个字段的长度。 –

+0

如果您希望得到答案,请不要发布您的文本图片 - 如果我们需要帮助,我们需要原始文本。你应该在你的问题中的'

'标签中发布你的文字。 –
                        
                            
    Enigmativity
                                
                            
                        
                    

回答

2

开始与此:

var lines = File.ReadAllLines("<your path/filename>"); 
var stringBags = lines.Select(l => l.Split('|')); 
var objects = stringBags.Select(b => new {Id = b[0], Name = b[1], SomeOtherField = b[2]}); 

这给你一个方法来解析该文件,并将其投影到某种可处理的对象中

+0

如果你要逐行处理,然后使用'File.ReadLines'。如果您必须*同时在内存中存储所有行,请仅使用'ReadAllLines'。 –

+0

如何根据H1,D1和D2拆分数据,因为这些是字段标题,我希望字段标题数据与其相关联。所以,每个H1的数据,每个D1的数据,每个D2的数据。 –

0

你可以对文件中的每一行做一个foreach循环和解析字符串...

foreach (string line in File.ReadAllLines("filepath")) 
+0

如果你要逐行处理,然后使用'File.ReadLines'。如果您必须*同时在内存中存储所有行,请仅使用'ReadAllLines'。 –