uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, System.RegularExpressions,
function CompareStrings(List: TStringList; Index1, Index2: Integer): Integer; begin Result := StrToInt(List.ValueFromIndex[Index2]) - StrToInt(List.ValueFromIndex[Index1]); end; procedure TForm1.Button1Click(Sender: TObject); var InputString: string; SubString: string; Matches: TMatchCollection; Match: TMatch; SubStringCounts: TStringList; begin Memo1.Clear; InputString := 'www,eee,rrr,rrr,rrr,eee,r'; SubStringCounts := TStringList.Create; // 使用正则表达式匹配字符串 System.RegularExpressions, Matches := TRegEx.Matches(InputString, '\w+'); // 统计各个子字符串出现的次数 for Match in Matches do begin SubString := Match.Value; if SubStringCounts.IndexOfName(SubString) = -1 then SubStringCounts.Add(SubString + '=1') else SubStringCounts.Values[SubString] := IntToStr(StrToInt(SubStringCounts.Values[SubString]) + 1); end; // 输出结果 for SubString in SubStringCounts do begin Memo1.Lines.Add(SubString) end; SubStringCounts.Free; end;
procedure TForm1.Button2Click(Sender: TObject); var InputString: string; SubString: string; Matches: TMatchCollection; Match: TMatch; SubStringCounts: TStringList; begin Memo1.Clear; InputString := 'www,eee,rrr,rrr,rrr,eee'; SubStringCounts := TStringList.Create; // 使用正则表达式匹配字符串 Matches := TRegEx.Matches(InputString, '\w+'); // 统计各个子字符串出现的次数 for Match in Matches do begin SubString := Match.Value; if SubStringCounts.IndexOfName(SubString) = -1 then SubStringCounts.Add(SubString + '=1') else SubStringCounts.Values[SubString] := IntToStr(StrToInt(SubStringCounts.Values[SubString]) + 1); end; // 对统计结果进行排序,出现次数最多的放在最前面 SubStringCounts.CustomSort(CompareStrings); // 输出排序后的结果 for SubString in SubStringCounts do begin Memo1.Lines.Add(SubString) end; SubStringCounts.Free; end;