回答人的补充
2011-09-0513:08
privatevoidGetData(stringstrMarc)
{
strMarc=strMarc.Substring(24,strMarc.Length-26);
intsep=strMarc.IndexOf(\"#\");
stringstrMark=strMarc.Substring(0,sep);
stringstrContent=strMarc.Substring(sep,strMarc.Length-sep);string[]contents=Regex.Split(strContent,@\"\\#[\\d|\\s|a]{2}\\@\",RegexOptions.IgnoreCase);
intfirstflag=0;//首行标识符
intflag=1;//主内容标识符
string[]firstline=contents[0].Remove(0,1).Split(\'#\');
boolfldone=false;intlen=strMark.Length/12;
string[]keys=newstring[len];
string[]values=newstring[len];
for(inti=0;ilen;i)
{
stringmark=strMark.Substring(i*12,3);
if(Int32.Parse(mark)10)//标识符小于010时特殊处理
{
if(!fldone)//内容部分为首行
{
keys=mark;
values=firstline[firstflag];
firstflag;
if(firstflag=firstline.Length)
{
fldone=true;
}
}
else//内容部分为中间
{
stringtemp=contents[flag-1];
inttempindex=temp.LastIndexOf(\"#\")1;
values[i-1]=\"@\"temp.Substring(0,tempindex-1);
keys=mark;
values=temp.Substring(tempindex,temp.Length-tempindex);
}
}
else
{
keys=mark;
values=\"@\"contents[flag];
flag;
}
}
SortedListstring,stringsl=newSortedListstring,string(newMySort());
for(inti=0;ilen;i)//填充并排序
{
sl.Add(keys,values);//特殊字段的处理
}
}
|