关于读取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           ///   <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  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值