数据如下:
i IDNUM1 CM202 MCNo1 HeadNo1
i IDNUM2 CM202 MCNo1 HeadNo2
i IDNUM3 CM201 MCNo2 HeadNo3
i IDNUM4 CM201 MCNo2 HeadNo4
a IDNUM5 CM301 MCNo3 HeadNo5
a IDNUM6 CM301 MCNo3 HeadNo6
a IDNUM7 CM301 MCNo4 HeadNo7
我要得到的数据,第三列,第四列后面的数字,第五列后面的数字
CM202-1-1
CM202-1-2
CM201-1-1    第三列数字虽然是2,但由于CM201在前面的数据中没有,所以这列初始为1
CM201-1-2    第四列要改为2
CM301-1-1
CM301-1-2
CM301-2-1

解决方案 »

  1.   

    如果只是做数据处理的话,建议你可以用SQL Server的DTS功能,很好用。直接将文本文件作为一个表操作。
      

  2.   

      如果只是整理数据的话,我建议将数据导入Excel中,然后可以通过,
    分列再组合,并可以定义宏,来形成你所要的数据。
      

  3.   

       private void button1_Click(object sender, EventArgs e)
            {
                string[] strSrc = { "i IDNUM1 CM202 MCNo1 HeadNo1 ",
                    "i IDNUM2 CM202 MCNo1 HeadNo2 ",
                    "i IDNUM3 CM201 MCNo2 HeadNo3 ",
                    "i IDNUM4 CM201 MCNo2 HeadNo4 ",
                    "a IDNUM5 CM301 MCNo3 HeadNo5 ",
                    "a IDNUM6 CM301 MCNo3 HeadNo6 ",
                    "a IDNUM7 CM301 MCNo4 HeadNo7" };            string[] strRet = GetString(strSrc);
                
            }
            private String[] GetString(String[] strSrc)
            {            ArrayList alRet = new ArrayList();
                Hashtable htPart1 = new Hashtable();
                Hashtable htPart2 = new Hashtable();
                int iPart1 = 0;
                int iPart2 = 0;            foreach (String str in strSrc)
                {
                    if (Regex.IsMatch(str, @"[\w\b]{2}[\w\d+\b]{3}"))
                    {
                        String[] sp = str.Split(' ');
                        if (sp.Length >= 5)
                        {
                            if (htPart1[sp[2]] == null)
                            {
                                htPart1.Add(sp[2], 1);
                                iPart1 = 1;
                            }
                            else
                            {
                                iPart1 = Convert.ToInt32(htPart1[sp[2]]) + 1;
                                htPart1[sp[2]] = iPart1;
                            }                        if (htPart2[sp[2]] == null)
                            {
                                htPart2.Add(sp[2], 1);
                                iPart2 = 1;
                            }
                            else
                            {
                                iPart2 = Convert.ToInt32(htPart2[sp[2]]) + 1;
                                htPart2[sp[2]] = iPart2;
                            }
                            alRet.Add(sp[2] + "-" + iPart1.ToString() + "-" + iPart2.ToString());
                        }
                    }
                }
                htPart1.Clear();
                htPart2.Clear();
                return (String[])alRet.ToArray(typeof(String));
            }
      

  4.   

    用EXCEL 不是很好处理么!