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,只是每项有一个指针,可以指向任何数据结构