AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Platzhalter in StringReplace?

Ein Thema von Svenkan · begonnen am 14. Aug 2007 · letzter Beitrag vom 15. Aug 2007
Antwort Antwort
Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#1

Platzhalter in StringReplace?

  Alt 14. Aug 2007, 22:08
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
Sven Kannenberg
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Eigenschaft àlà rfReplaceLast für StringReplace?

  Alt 14. Aug 2007, 23:18
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:
s:=FalschHerum('Delphi Test Test Delphi')
s:=StringReplace(s, FalschHerum('Test'), FalschHerum('funktioniert'),[]);
s:=FalschHerum(s);
Sollte für s das hier herausgeben: Delphi Test funktioniert Delphi ausgeben.

Ich hab nur grad keine Funktion zum herumdrehen von Strings im Kopf.
[Edit]
Da stand doch gerade noch was anderes
Zitat von Svenkan:
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: [i]%s</i>
Ja, natürlich:
s:=StringReplace('Ein Hut der hat %s Ecken, %s Ecken hat mein Hut.', '%s', 'drei',[rfReplaceAll]); s enthält: Ein Hut der hat drei Ecken, drei Ecken hat mein Hut.
[Edit2=Erklärung]Mit dem Flag rfReplaceAll wird angegeben, dass jedes vorkommen von %s ersetzt werden soll.
Benjamin
  Mit Zitat antworten Zitat
Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Platzhalter in StringReplace?

  Alt 15. Aug 2007, 00:08
Ja stimmt, stands da auch, aber das wollt ich dann doch nich mehr.
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):

  abkla1:=StringReplace(Query22.FieldByName('NAME').AsString,'*','» [i]'+%s+'[/i]',[rfReplaceAll, rfIgnoreCase]);
Sven Kannenberg
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#4

Re: Platzhalter in StringReplace?

  Alt 15. Aug 2007, 00:28
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 abkla1:=StringReplace(Query22.FieldByName('NAME').AsString,'*','[i]',[rfReplaceAll, rfIgnoreCase]) + '[/i]';
  Mit Zitat antworten Zitat
Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Platzhalter in StringReplace?

  Alt 15. Aug 2007, 00:42
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.
Trotzdem thx.
Sven Kannenberg
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#6

Re: Platzhalter in StringReplace?

  Alt 15. Aug 2007, 00:51
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.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Platzhalter in StringReplace?

  Alt 15. Aug 2007, 05:08
Guten Morgen,

ein einfaches IF verhindert schließende Tags, wo sie fehl am Platz sind:

Delphi-Quellcode:
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;
Der beim Aufruf übergebene Text sollte dabei schon den Regeln für HTML-Text gehorchen.

Grüße vom marabu
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz