![]() |
String teilen
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:
Ein Beispielaufruf würde so aussehen:
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;
Delphi-Quellcode:
Als Ergebnis wird ausgegeben:
CommaTxt('Teil1, Teil2, Teil3, Teil4, etc.',',');
Code:
Ein weiterer Beispielaufruf würde so aussehen:
Teil1
Teil2 Teil3 Teil4 etc.
Delphi-Quellcode:
Als Ergebnis wird dasselbe wie beim ersten Beispiel ausgegeben.
CommaTxt('Teil1; Teil2; Teil3; Teil4; etc.',';');
Ich hoffe, ihr könnt etwas hiermit anfangen |
Re: String teilen
|
DP-Maintenance
Dieses Thema wurde von "Chakotay1308" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Sonstige Fragen zu Delphi" verschoben.
|
Re: String teilen
Zitat:
@Danniolo: Warum gibst du nicht einfach als weiteren Parameter an, ob ein Leerzeichen ignoriert werden soll, anstatt dass der Programmierer in deinem Code herumarbeiten muss? Ich würde aber eher auf reguläre Ausdrücke setzen, denn erstens ist es höchstwahrscheinlich schneller zu programmieren und zweitens kinderleicht an die äußeren Bedingungen anzupassen. Statt z.B. nun die Funktion so zu verändern, dass sie mehrere Leerzeichen ignoriert, würde einfach der Ausdruck
Code:
genügen, fertig.
(,|^)\s*([^,]*)
[add]Für den Regex gebe ich keine Garantie (weder Richtigkeit noch Einfachheit) :wink: [/add] |
Re: String teilen
Delphi-Quellcode:
Aber für'n Notfall stört so'ne kleine Erweiterung och nich,
X := Explode(',', S);
For i := 0 to High(X) do X[i] := TrimRight(X[i]); aber mal sehn was aus der hier vorgestellten Version wird. ^^ |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 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