![]() |
String's zusammenfügen mit Trennzeichen falls String nicht leer
Titel sagt schon alles, oder nicht? ;-)
Es muss doch solch eine Funktion geben... Ich habe verschiedene Strings die ich zu einem String zusammenführen möchte und zwar wie folgt: "Kontakt: Vorname Name, TelG, Tel, Mobil" z.b.: "Kontakt: Peter Müller, 0800800800, 0900900900, 0815885522 Nur kann jeder dieser Werte auch leer sein und ich hätte ein Komma oder Leerschlag zuviel. Klar kann ich jetzt mühsam jeden String auf seine Existenz prüfen (sein oder nicht sein, das ist die Frage!) aber irgendwie bin ich dazu zu faul :) Bei einem Framework gab es eine Funktion in der man ein Template und die verschiedenen Strings übergeben konnte:
Delphi-Quellcode:
Die eckigen Klammern [] sind die Feldnamen. Der Inhalt der Geschwungenen {} wird nur angezeigt, wenn mindestens ein Wert darin vorhanden ist. Also: {, [Name]} wird nur ausgegeben, wenn ein Name vorhanden ist, ansonsten fällt das Komma weg.
template:= "Kontakt: {[Vorname] }[Nachname]{, [TelG]}{, [TelP]}{, [Mobile]}";
LabelBla.Caption:= FormatString( template, [ Vorname, Nachname, TelG, TelP, Mobile ]); Langer Rede kurzer Sinn: Irgend so etwas suche ich :-) Gibt es sowas? Thanks! |
AW: String's zusammenfügen mit Trennzeichen falls String nicht leer
Du kannst auch alternativ nachträglich mit ReplaceString alle ',,' mit ',' ersetzen.
|
AW: String's zusammenfügen mit Trennzeichen falls String nicht leer
Ich wüßte jetzt nicht, wo es soetwas "Spezielles" schon fertig gibt, außer dort, wo es sich jemand, für sich selbst, in einem seiner Projekte, selbst gebaut hat.
Das Einfachste wäre das Ganze ganz "billig" als Funktion, mit ein paar IFs, zusammenzubauen. In Delphi gibt es hier
Delphi-Quellcode:
keine Möglichkeit, um an den Namen der übergebenen Variablen ranzukommen, um darüber dann die Stelle zu suchen, welche mit deren wert ersetzt werden soll.
FormatString( template, [ Vorname, Nachname, TelG, TelP, Mobile ]);
Du müßtest also, für eine "allgemeine" Funktion immer den Namen und den Wert als Paar übergeben, wogegen eine selbstgebastelte Funktion dann natürlich einfacher zu Handhaben wäre, wo die Parameter dann auch nicht als Array übergeben werden. (ohne Array isses einfacher für das CodeInsight und die Autovervollständigung) |
AW: String's zusammenfügen mit Trennzeichen falls String nicht leer
KA ob es was vorgefertiges gibt, aber lange Rede kurz gecoded:
Delphi-Quellcode:
function Combine(const Astr1, Astr2, Delim: string): string;
begin if (Astr1 = '') or (Astr2 = '') then Result := Astr1 + Astr2 else Result := Astr1 + Delim + Astr2; end; |
AW: String's zusammenfügen mit Trennzeichen falls String nicht leer
Meine Idee ist etwas aufwändiger:
Delphi-Quellcode:
function CSVLine(const Values: array of string; const Delimiter: string = ', ';
BlanksAllowed: Boolean = false): string; const FormatStr = '%s%s'; var i: integer; Value: string; begin Result := ''; for I := Low(Values) to High(Values) do begin Value := Values[i]; if not BlanksAllowed then Value := trim(Value); if Value <> '' then Result := Result + Format(FormatStr, [Value, Delimiter]); end; if Result <> '' then SetLength(Result, Length(Result) - Length(Delimiter)); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:58 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