读书人

TStringList 内容修改,该如何解决

发布时间: 2012-06-08 12:55:24 作者: rapoo

TStringList 内容修改
TStringList 中的内容怎样修改??

一个TStringList 内容如下
aa123
bb135
aa456
aa789
bb790

怎样查出字符串前两位相同的,把后面的字符串合并在一起,最后达到下面的效果
aa123|456|789
bb135|790



[解决办法]

Delphi(Pascal) code
procedure TForm1.Button1Click(Sender: TObject);var  list1,list2:TStringList;  i,j:Integer;  str:string;  find:Boolean;begin  list1 := TStringList.Create;  list2 := TStringList.Create;  list1.Add('aa123');  list1.Add('bb135');  list1.Add('aa456');  list1.Add('aa789');  list1.Add('bb790');  for i := 0 to list1.Count - 1 do  begin    find :=False;    str := Copy(list1.Strings[i],1,2);    for j := 0 to list2.Count - 1 do    begin      if (Copy(list2.Strings[j],1,2) = str) then      begin        list2.Strings[j] := list2.Strings[j]+'|'+Copy(list1.Strings[i],3,Length(list1.Strings[i])-2);        find := True;        Break;      end;    end;    if not find  then      list2.Add(list1.Strings[i]);  end;  ShowMessage(list2.Text);end;
[解决办法]
for i:=0 to strlist.count-1 do
begin
sTem:= Copy(strlist[i],1,2);
stem3:='';
for j:=0 to strlist.count-1 do
begin
stem2:= Copy(strlist[j],1,2);
if (i=j) and (sTem=sTem2) then
begin
stem3:=strlist[i];
continue;
end;
if sTem=sTem2 then
begin
sTem4:= Copy(strlist[j],3,length(strlist[j]));
stem3:=stem3+'|'+sTem4;
end;
if stem3<>'' then
strlist2.add(stem3);
end;

大概这样子 不知行不行 没试过 结果就是strlist2中

[解决办法]
Delphi(Pascal) code
procedure TForm1.btn1Click(Sender: TObject);var  sl, slTmp, slRet: TStringList;  str, strTmp, subStr: string;  i: Integer;begin  sl := TStringList.Create;  slTmp := TStringList.Create;  slRet := TStringList.Create;  sl.Add('aa123');  sl.Add('bb135');  sl.Add('aa456');  sl.Add('aa789');  sl.Add('bb790');  while (sl.Count > 0) do  begin    str := sl[sl.Count - 1];    slTmp.Add(str);    subStr := Copy(str, 1, 2);    sl.Delete(sl.Count - 1);        for i := sl.Count - 1 downto 0 do    begin      str := sl[i];      strTmp := Copy(str, 1, 2);      if (subStr = strTmp) then      begin        slTmp.Add(str);        sl.Delete(i);      end;    end;    str := slTmp[slTmp.count-1] ;    slTmp.Delete(slTmp.Count -1);    for i := slTmp.Count -1 downto 0 do    begin      str := str + '|'+ Copy(slTmp[i], 3,Length(slTmp[i]) -2) ;      slTmp.Delete(i);    end;    slTmp.Clear() ;    slRet.Add(str) ;  end;  for i := slRet.Count -1 downto  0 do  begin    ShowMessage(slRet[i]);  end;end;
[解决办法]
Delphi(Pascal) code
procedure TForm1.FormCreate(Sender: TObject);var  L: TStringList;  I, J, C: Integer;  S: string;begin  L := TStringList.Create;  L.Add('aa123');  L.Add('bb135');  L.Add('aa456');  L.Add('aa789');  L.Add('bb790');  I := 0;  C := 0;  while I < L.Count do  begin    S := Copy(L[I], 1, 2);    for J := 0 to C - 1 do      if S = Copy(L[J], 1, 2) then      begin        L[J] := L[J] + '|' + Copy(L[I], 3, MaxInt);        L.Delete(I);        I := -1;        Break      end;    if I = -1 then      I := C    else    begin      Inc(I);      Inc(C)    end;  end;  ShowMessage(L.Text);  L.Freeend;
[解决办法]
Tlist没string,只是每项有一个指针,可以指向任何数据结构

读书人网 >.NET

热点推荐