Nachdem ich schon oft die Frage gehört habe, wie man einen String nach einem bestimmten Zeichen trennen kann
und ich nur umständliche Wege gefunde habe, habe ich mir meine eigene Methode zusammengebastelt.
eine Besonderheit dieser Function ist, dass ein Komma nach dem Trennzeichen ignoriert wird.
Die einzelnen Teile des Strings werden in einer StringList ausgegeben.
Delphi-Quellcode:
function CommaTxt(PromtString, Splitter: String): TStrings;
var ix, ix2: Integer;
TempStringList: TStringList;
CommaTxtX: String;
Begin
TempStringList := TStringList.Create;
TempStringList.Clear;
TempStringList.Add('');
For ix := 1 To length(PromtString) Do
Begin
if PromtString[ix] = Splitter Then
begin
CommaTxtX := '';
if PromtString[ix + 1] = ' ' Then ix2 := ix + 1 Else ix2 := ix; //Diese Zeile löschen, falls das Leerzeichen hinter
while ix2 < length(PromtString) Do //dem Trennzeichen berücksichtigt werden soll
Begin
Inc(ix2);
if PromtString[ix2] <> splitter Then
CommaTxtX := CommaTxtX + PromtString[ix2]
Else
ix2 := length(PromtString);
End;
TempStringList.Add(CommaTxtX);
End Else
Begin
CommaTxtX := '';
ix2 := 0;
while ix2 < length(PromtString) Do
Begin
Inc(ix2);
if PromtString[ix2] <> Splitter Then
CommaTxtX := CommaTxtX + PromtString[ix2]
Else
ix2 := length(PromtString);
End;
TempStringList[0] := (CommaTxtX);
End;
End;
Result := TempStringList;
End;
Ein Beispielaufruf würde so aussehen:
CommaTxt('Teil1, Teil2, Teil3, Teil4, etc.',',');
Als Ergebnis wird ausgegeben:
Code:
Teil1
Teil2
Teil3
Teil4
etc.
Ein weiterer Beispielaufruf würde so aussehen:
CommaTxt('Teil1; Teil2; Teil3; Teil4; etc.',';');
Als Ergebnis wird dasselbe wie beim ersten Beispiel ausgegeben.
Ich hoffe, ihr könnt etwas hiermit anfangen