数据如下:
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
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
分列再组合,并可以定义宏,来形成你所要的数据。
{
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));
}