2012-01-13 57 views
-1

AOA如何通过线读取文件,分割记录行,并将它们保存到数据库

我想分裂下面的代码,并保存到数据库:

31201011281853000100000000710003 

分裂的格式是

31 

(2010-11-28,18 53) yyyy-mm-dd,hr-min 

0001 

0000000071 

0003 

首先,我必须上传一个包含这些代码的文件,然后逐行读取每条记录,按上述格式拆分每行,然后将其保存到数据库中。

+5

您是否尝试过在你自己? – simchona 2012-01-13 08:02:12

+1

-1膳食在车轮水平的问题。 – 2012-01-13 09:08:13

回答

4

使用StreamReader可逐行读取文件并使用String.substring方法提取子字符串。

2

我+1 AVD的答案,但我想我会充实一点,以防万一OP不能自己找出答案。


当您上传文件后,您需要使用streamreader类阅读它。使用流式阅读器,您可以将每行读入一个变量,然后使用substring执行拆分。

StreamReader位于System.IO名称空间中。

using System.IO; 
//------------ 

string line; 
string s1; 
string s2; 
string s3; 
string s4; 
string s5; 

using (StreamReader reader = new StreamReader("file.txt")) 
{ 
    line = reader.ReadLine(); // 31201011281853000100000000710003 
    s1 = line.substring(0,2); // 31 
    s2 = line.substring(3,12); // 201011281853 
    s3 = line.substring(13,4); // 0001 
    s4 = line.substring(14,10);// 0000000071 
    s5 = line.substring(15,4); // 0003 

    // Pass s1-s5 to your insert/update statements in DAL. 
} 
0

我开始与此:var records = File.ReadAllLines(@"C:\test.txt").Select(line => Regex.Match(line, @"(\d{2})(\d{12})(\d{4})(\d{10})(\d{4})").Groups.Cast<Group>().Skip(1).Select((g,i) => i == 1 ? DateTime.ParseExact(g.Value, "yyyyMMddHmm", null).ToString("(yyyy-MM-dd,H mm)") :g.Value).ToList());

嗯......确保你有一个宽屏显示器,然后:)

相关问题