delphi 统计一个文本的文字重复次数并且排序
今天做关键词排序的时候用到的排序,记录一下,防止丢失
统计一个文本的文字重复次数
比如: 1,1,2,3,4,5,1,5,5,1,2,3,
结果:1,5,2,3,4
1出现4次 所以排第一
5出现3次 排第二
function MySort(List: TStringList; Index1, Index2: Integer): Integer;
var
I,J:Integer;
begin
I:=Integer(List.Objects[Index1]);
J:=Integer(List.Objects[Index2]);
if i>j then
Result:=-1
else
if i<j then
Result:=1
else
Result:=0;
end;
procedure TForm1.btn1Click(Sender: TObject);
var
slResult,slTmp:TStringList;
I,Idx:Integer;
begin
mmo1.Clear;
slTmp:=TStringList.Create;
slResult:=TStringList.Create;
try
//统计.
//注意这个,如果是英文的逗号.
slTmp.Delimiter:=’,’;
slTmp.DelimitedText:=edt1.Text;
for I:=0 to slTmp.Count-1 do
begin
Idx:=slResult.IndexOf(slTmp[i]);
if Idx=-1 then
slResult.AddObject(slTmp[i],TObject(1))
else
slResult.Objects[Idx]:=TObject(Integer(slResult.Objects[idx])+1);
end;
//排序
slResult.CustomSort(MySort);
//打印
for I:=0 to slResult.Count-1 do
mmo1.Lines.Add(Format(‘排第%D位的是%S,个数:%D’,[i+1,slResult[i],Integer(slResult.Objects[i])]));
finally
slResult.Free;
slTmp.Free;
end;
end;