Delphi, Strings splitten

Februar 27th, 2007 Autor: Phillip Kroll -

Borland DelphiIn den standard Bibliotheken von Delphi sucht man vergeblich nach Methoden zur komfortablen Stringverarbeitung. Man muss sich mit Pos, PosEx und Copy selber zusammenbauen was man braucht. Die häufigste Anwendung ist sicher, das spliten eines Strings aufgrund eines Trenners. Folgende Methode erledigt dies zuverlässig und schreibt jeden Teilstring in eine Zeile einer TStringList Instanz:

function SplitItWell( str, split : String ) : TStringList;
var
offset, last : integer;
begin
offset := 1;
last := 1;
Result := TStringList.Create;
if str = '' then Exit;
if length( str ) <= length( split ) then
begin
Result.Add( str );
Exit;
end;

repeat
offset := PosEx( split, str, offset );

if offset = 0 then
Result.Add( Copy( str, last, length( str ) ) )
else
begin
Result.Add( Copy( str, last, offset - last ) );
offset := offset + length( split );
last := offset;
end;

until offset = 0;
end;

SplitItWell erstellt eine Instanz von TStringList und zerlegt str in seine Einzelteile überall da wo split vorkommt.

Um die Stringliste wieder in einen String zu verwandeln genügt folgende Methode:

function AssembleItWell( stringList : TStringList; sep : String ) : String;
var
I : Integer;
begin
Result := '';

for I := 0 to stringList.Count - 1 do
if I = stringList.Count - 1 then
Result := Result + stringList[ i ]
else
Result := Result + stringList[ i ] + sep

end;

Als Anwendungsbeispiel sortiert folgender Code die Elemente in einem String alphanumerisch.

function SortStringBySeperator( str, sep : String ) : String;
var
SplitList : TStringList;
begin

SplitList := SplitItWell( str, sep );
SplitList.Sorted := True;
Result := AssembleItWell( SplitList, sep );
FreeAndNil( SplitList );

end;

Benötigte Units: StrUtils;

Bisher keine Kommentare für diesen Eintrag...

0 response(s) to Delphi, Strings splitten

    Kommentare sind für diesen Beitrag geschlossen.