![]() |
Split-Funktion
Hallo Leute,
ich wollte hier jetzt mal meine Split-Funtkion posten, da doch des öfteren Fragen ala. "Wie trenne ich eine String bei jedem Leerzeichen" oder "Wie trenne ich einen String bei neuen Zeilen" auftreten. Erstmal die Funktion, Erklärung kommt drunter.
Delphi-Quellcode:
function Split(fText: String;fSep: Char;fTrim: Boolean=false;fQuotes: Boolean=false):TStringList;
function Split(const fText: String; const fSep: Char; fTrim: Boolean=false; fQuotes: Boolean=false):TStringList;
var vI: Integer; vBuffer: String; vOn: Boolean; begin Result:=TStringList.Create; vBuffer:=''; vOn:=true; for vI:=1 to Length(fText) do begin if (fQuotes and(fText[vI]=fSep)and vOn)or(Not(fQuotes) and (fText[vI]=fSep)) then begin if fTrim then vBuffer:=Trim(vBuffer); if vBuffer='' then vBuffer:=fSep; // !!! sonst läuft z.B. split(',**',',') auf einen Hammer... if vBuffer[1]=fSep then vBuffer:=Copy(vBuffer,2,Length(vBuffer)); Result.Add(vBuffer); vBuffer:=''; end; if fQuotes then begin if fText[vI]='"' then begin vOn:=Not(vOn); Continue; end; if (fText[vI]<>fSep)or((fText[vI]=fSep)and(vOn=false)) then vBuffer:=vBuffer+fText[vI]; end else if fText[vI]<>fSep then vBuffer:=vBuffer+fText[vI]; end; if vBuffer<>'' then begin if fTrim then vBuffer:=Trim(vBuffer); Result.Add(vBuffer); end; end;
Beispielaufruf und Ergebnis:
Code:
Ich hoffe damit sind einige Fragen geklärt. Falls nicht könnt ihr mir gerne eine PN schreiben.
Aufruf:
Split('" Wert 1";"Wert 2 mit ;";"Wert 3 "',';',true,true); Ergebnis (Einzele Werte der TStringList): Wert 1 Wert 2 mit ; Wert 3 Aufruf 2: Split('" Wert 1";"Wert 2 mit ;";"Wert 3 "',';',false,true); Ergebnis (Einzele Werte der TStringList): Wert 1 Wert 2 mit ; Wert 3 Aufruf 3: Split('" Wert 1";"Wert 2 mit ;";"Wert 3 "',';',false,false); Ergebnis (Einzele Werte der TStringList): " Wert 1" "Wert 2 mit " "Wert 3 Gruß [edit=Chakotay1308][delphi]-Tags, anstatt [code]-Tags. Mfg, Chakotay1308[/edit] [edit=Luckie] Mfg, Luckie[/edit] |
Re: Split-Funktion
Zitat:
Hinweis: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz