Ich spar mir mal das drumherum (erstellt in Delphi 11):
Delphi-Quellcode:
function GetDuplicatesFromString(const AString: string): TArray<string>;
const
cWordDelims: TArray<string> = [' ', ',', '.'];
cCaseSensitive = False;
var
KnownWords: TStringList;
Duplicates: TStringList;
begin
KnownWords := TStringList.Create(dupIgnore, True, cCaseSensitive);
try
Duplicates := TStringList.Create(dupIgnore, True, cCaseSensitive);
try
for var CurrentWord in AString.Split(cWordDelims) do
if KnownWords.IndexOf(CurrentWord) < 0 then
KnownWords.Add(CurrentWord)
else
Duplicates.Add(CurrentWord);
Result := Duplicates.ToStringArray;
finally
Duplicates.Free;
end;
finally
KnownWords.Free;
end;
end;
Die Ausgabe der Duplikate erfolgt hier alphabetisch und in Bezug auf Groß-/Kleinschreibung wird die Schreibweise des zweiten Vorkommens des Wortes verwendet.