关于读取txt文件的分段问题
txt文件格式如下:
[属性1]
参数=2210.3,12.65,115,25,420.66,445.69,0.569
[属性2]
9,0.018,2003-10,@
J01,1,3751508.5,39438683.65
J02,1,3751508.5,39438690.15
5,0.0247,2003-12,@
J01,1,3755389.7,39437380.2
怎样把属性1和属性2分离出来?属性一算是一段,属性2算是另一段,属性2中可能有多个以‘@’结尾的部分又需要分成多个小段。
我主要是想将txt分成3部分,一个是属性1和属性2之间的那一段,第二部分是以‘@’结尾的那一行到下一个以'@'结尾的那一行之前的那一段,就是示例中的第4、5、6三行,第三部分就是之后的7、8两行,也就是和第二部分差不多的,要求要是有多个‘@’结尾的部分的话要求能分成多段。
不知道我说明白没有,不明白的一起讨论一下!
[属性1]
参数=2210.3,12.65,115,25,420.66,445.69,0.569
[属性2]
9,0.018,2003-10,@
J01,1,3751508.5,39438683.65
J02,1,3751508.5,39438690.15
5,0.0247,2003-12,@
J01,1,3755389.7,39437380.2
怎样把属性1和属性2分离出来?属性一算是一段,属性2算是另一段,属性2中可能有多个以‘@’结尾的部分又需要分成多个小段。
我主要是想将txt分成3部分,一个是属性1和属性2之间的那一段,第二部分是以‘@’结尾的那一行到下一个以'@'结尾的那一行之前的那一段,就是示例中的第4、5、6三行,第三部分就是之后的7、8两行,也就是和第二部分差不多的,要求要是有多个‘@’结尾的部分的话要求能分成多段。
不知道我说明白没有,不明白的一起讨论一下!
成果:
1 /// <summary>
2 /// Gets the ZD array.
3 /// </summary>
4 /// <param name="fileName">Name of the file.</param>
5 /// <returns></returns>
6 private ArrayList GetZDArray(string fileName)
7 {
8 //读取文件内容
9 StreamReader sr = new StreamReader(fileName, System.Text.Encoding.Default);
10 string tempStr = ""; //sr.ReadLine();
11 ArrayList ArrList = new ArrayList();
12 ArrayList csArrList = new ArrayList();
13 ArrayList dkArrList = new ArrayList();
14 ArrayList zbArrList = new ArrayList();
15
16 //初步整理文件内容并读出至ArrList中
17 while ((tempStr = sr.ReadLine()) != null)
18 {
19 tempStr = tempStr.Trim();
20 if (tempStr.Length < 1)
21 continue;
22 if (tempStr.IndexOf("[属性1]") == 0 ||tempStr.IndexOf("[属性2]") == 0)
23 {
24 continue;
25 }
26 else if (tempStr.Split('=').Length > 1)
27 {
28 csArrList.Add(tempStr);
29 }
30 else
31 {
32 dkArrList.Add(tempStr);
33 }
34 }
35 sr.Close();
36 ArrList.Add(csArrList);
37 ArrList.Add(dkArrList);
38 return ArrList;
39 }
40
41 /// <summary>
42 /// Gets the ZB STR from array.
43 /// </summary>
44 /// <param name="ArrList">The arr list.</param>
45 /// <returns></returns>
46 private string GetZBStrFromArray(ArrayList ArrList)
47 {
48 string dkstr = "";
49 string tem = "";
50 int spl = 0;
51 for (int i = 0; i < ArrList.Count; i++)
52 {
53 tem = (string)ArrList[i];
54 if (tem.Trim().Length < 1)
55 continue;
56 if (tem.Substring(tem.Length - 1, 1) == "@")
57 {
58 //continue;
59 spl++;
60 dkstr = dkstr + "#" + tem;
61 }
62 else
63 {
64 dkstr = dkstr + tem + "$";
65 }
66
67 }
68 return dkstr;
69 }
70 private bool InsertDKAndZB(string dkzbStr)
71 {
72 string[] dkandzb = dkzbStr.Split('#');
73 for (int i = 0; i < dkandzb.Length; i++)
74 {
75 string val1 = "";
76 if (dkandzb[i].Trim().Length < 1)
77 continue;
78 string[] dkStr = dkandzb[i].Split('@');
79 //dkStr 就是属性2中的一小段
80 }
81 }
2 /// Gets the ZD array.
3 /// </summary>
4 /// <param name="fileName">Name of the file.</param>
5 /// <returns></returns>
6 private ArrayList GetZDArray(string fileName)
7 {
8 //读取文件内容
9 StreamReader sr = new StreamReader(fileName, System.Text.Encoding.Default);
10 string tempStr = ""; //sr.ReadLine();
11 ArrayList ArrList = new ArrayList();
12 ArrayList csArrList = new ArrayList();
13 ArrayList dkArrList = new ArrayList();
14 ArrayList zbArrList = new ArrayList();
15
16 //初步整理文件内容并读出至ArrList中
17 while ((tempStr = sr.ReadLine()) != null)
18 {
19 tempStr = tempStr.Trim();
20 if (tempStr.Length < 1)
21 continue;
22 if (tempStr.IndexOf("[属性1]") == 0 ||tempStr.IndexOf("[属性2]") == 0)
23 {
24 continue;
25 }
26 else if (tempStr.Split('=').Length > 1)
27 {
28 csArrList.Add(tempStr);
29 }
30 else
31 {
32 dkArrList.Add(tempStr);
33 }
34 }
35 sr.Close();
36 ArrList.Add(csArrList);
37 ArrList.Add(dkArrList);
38 return ArrList;
39 }
40
41 /// <summary>
42 /// Gets the ZB STR from array.
43 /// </summary>
44 /// <param name="ArrList">The arr list.</param>
45 /// <returns></returns>
46 private string GetZBStrFromArray(ArrayList ArrList)
47 {
48 string dkstr = "";
49 string tem = "";
50 int spl = 0;
51 for (int i = 0; i < ArrList.Count; i++)
52 {
53 tem = (string)ArrList[i];
54 if (tem.Trim().Length < 1)
55 continue;
56 if (tem.Substring(tem.Length - 1, 1) == "@")
57 {
58 //continue;
59 spl++;
60 dkstr = dkstr + "#" + tem;
61 }
62 else
63 {
64 dkstr = dkstr + tem + "$";
65 }
66
67 }
68 return dkstr;
69 }
70 private bool InsertDKAndZB(string dkzbStr)
71 {
72 string[] dkandzb = dkzbStr.Split('#');
73 for (int i = 0; i < dkandzb.Length; i++)
74 {
75 string val1 = "";
76 if (dkandzb[i].Trim().Length < 1)
77 continue;
78 string[] dkStr = dkandzb[i].Split('@');
79 //dkStr 就是属性2中的一小段
80 }
81 }