您的位置:首页 > 其它

关于读取txt文件的分段问题

2008-03-18 21:25 344 查看
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);

             string tempStr = ""; //sr.ReadLine();

             ArrayList ArrList = new ArrayList();

             ArrayList csArrList = new ArrayList();

             ArrayList dkArrList = new ArrayList();

             ArrayList zbArrList = new ArrayList();

 

             //初步整理文件内容并读出至ArrList中 

             while ((tempStr = sr.ReadLine()) != null)

             {

                 tempStr = tempStr.Trim();

                 if (tempStr.Length < 1)

                     continue;

                 if (tempStr.IndexOf("[属性1]") == 0 ||tempStr.IndexOf("[属性2]") == 0)

                 {

                     continue;

                 }

                 else if (tempStr.Split('=').Length > 1)

                 {

                     csArrList.Add(tempStr);

                 }

                 else

                 {

                     dkArrList.Add(tempStr);

                 }

             }

             sr.Close();

             ArrList.Add(csArrList);

             ArrList.Add(dkArrList);

             return ArrList;

         }

 

  /// <summary>

         /// Gets the ZB STR from array.

         /// </summary>

         /// <param name="ArrList">The arr list.</param>

         /// <returns></returns>

         private string GetZBStrFromArray(ArrayList ArrList)

         {

             string dkstr = "";

             string tem = "";

             int spl = 0;

             for (int i = 0; i < ArrList.Count; i++)

             {

                 tem = (string)ArrList[i];

                 if (tem.Trim().Length < 1)

                     continue;

                 if (tem.Substring(tem.Length - 1, 1) == "@")

                 {

                     //continue;

                     spl++;

                     dkstr = dkstr + "#" + tem;

                 }

                 else

                 {

                     dkstr = dkstr + tem + "$";

                 }

 

             }

             return dkstr;

         }

 private bool InsertDKAndZB(string dkzbStr)

 {

           string[] dkandzb = dkzbStr.Split('#');

             for (int i = 0; i < dkandzb.Length; i++)

             {

                 string val1 = "";

                 if (dkandzb[i].Trim().Length < 1)

                     continue;

                 string[] dkStr = dkandzb[i].Split('@');

                //dkStr  就是属性2中的一小段

            }

 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: