![]() |
Platzhalter in StringReplace?
Ist es möglich, eine Art Platzhalter in StringReplace zu benutzen?
Sodass ich sowohl vorne und hinten etwas im String ersetzen kann. So in der Art: %s |
Re: Eigenschaft àlà rfReplaceLast für StringReplace?
Falls es keine bereits implementierte Funktion dafür gibt, ganz pragmatisch:
Drehe alle Strings rum und ersetze das erste Vorkommen. Hat denselben Effekt. Also so:
Delphi-Quellcode:
Sollte für s das hier herausgeben: Delphi Test funktioniert Delphi ausgeben.
s:=FalschHerum('Delphi Test Test Delphi')
s:=StringReplace(s, FalschHerum('Test'), FalschHerum('funktioniert'),[]); s:=FalschHerum(s); Ich hab nur grad keine Funktion zum herumdrehen von Strings im Kopf. [Edit] Da stand doch gerade noch was anderes :gruebel: Zitat:
Delphi-Quellcode:
s enthält: Ein Hut der hat drei Ecken, drei Ecken hat mein Hut.
s:=StringReplace('Ein Hut der hat %s Ecken, %s Ecken hat mein Hut.', '%s', 'drei',[rfReplaceAll]);
[Edit2=Erklärung]Mit dem Flag rfReplaceAll wird angegeben, dass jedes vorkommen von %s ersetzt werden soll. |
Re: Platzhalter in StringReplace?
Ja stimmt, stands da auch, aber das wollt ich dann doch nich mehr. :D
Trotzdem danke. ;) Aber ich werds mir trotzdem anguggn, also keine Angst. :) Zum anderen: damit meinte ich eher folgendes: Ich habe Query22.FieldByName('NAME').AsString. Dies enthält bspw. *R7a. Nun muss zunächst das * gegen ein ersetzt werden. Zum Abschluss noch ein hinter das Ganze. Dafür einen Platzhalter. Dass ich das auch so umsetzen kann. So als Beispiel (funktioniert ja leider so nicht, aber nur zum Veranschaulichen):
Delphi-Quellcode:
abkla1:=StringReplace(Query22.FieldByName('NAME').AsString,'*','» [i]'+%s+'[/i]',[rfReplaceAll, rfIgnoreCase]);
|
Re: Platzhalter in StringReplace?
Irgendwie geht es bestimmt. * gegen zu ersetzen ist kein Problem, hast du auch ein Zeichen, das immer dort steht, wo dein hin soll?
edit: Aha... So meinst du das. Wie wäre es mit
Delphi-Quellcode:
abkla1:=StringReplace(Query22.FieldByName('NAME').AsString,'*','[i]',[rfReplaceAll, rfIgnoreCase]) + '[/i]';
|
Re: Platzhalter in StringReplace?
Ne, an der Stelle ist kein festes Zeichen. ;)
Mit der Lösung wird das [/i] jetzt zwar hinter jedes Element gesetzt (auch, wo es nicht hingehört), aber egal. Passt schon. ;) Wenns nicht anders geht, musses halt so. Wird sich schon nicht jeder den Source durchlesen. :D Trotzdem thx. ;) |
Re: Platzhalter in StringReplace?
Nein, das geht nicht so ;) Du kannst schließende Tags nur vernünftig setzen, wenn du weißt, wo sie hingehören - und in dem Fall kannst du reguläre Ausdrücke benutzen.
|
Re: Platzhalter in StringReplace?
Guten Morgen,
ein einfaches IF verhindert schließende Tags, wo sie fehl am Platz sind:
Delphi-Quellcode:
Der beim Aufruf übergebene Text sollte dabei schon den Regeln für HTML-Text gehorchen.
function TaggedString(const s: string): string;
var i: Integer; begin i := LastDelimiter('*', s); if i > 0 then Result := StuffString(s, i, 1, '[i]') + '[/i]' else Result := s; end; Grüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:11 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