![]() |
Bestimmte Zeichen im String durch andere ersetzen!?
Hallo,
wie kann ich bestimmte Buchstaben bzw. Zeichen in einem String durch andere ersetzen? Danke. MfG |
Re: Bestimmte Zeichen im String durch andere ersetzen!?
StringReplace/AnsiStringReplace
|
Re: Bestimmte Zeichen im String durch andere ersetzen!?
oder mit ner for-schleife...
Delphi-Quellcode:
var s:string;
i:integer; //... s:='Dein text'; for i:=1 to length(s) do if s[i]='t' then s[i]:='T'; |
Re: Bestimmte Zeichen im String durch andere ersetzen!?
|
Re: Bestimmte Zeichen im String durch andere ersetzen!?
Hallo, ok ich habs jetzt mit StringReplace gemacht. Aber wie kann ich mehrere zeichen ersetzen lassen. eins ist ja kein problem, da hab ich:
Delphi-Quellcode:
aber wie mach ich das, wenn ich mehrere verschiedene zeichen ersetzen lassen will?
procedure TForm1.Button1Click(Sender: TObject);
var text: string; text2: string; begin text := edit1.text; //eingabe des edit felds wird in der text variable gespeichert. text2:=StringReplace(text,'a','e',[rfReplaceAll, rfIgnoreCase]); // die 'a's werden durch'e's ersetzt und dann in der text2 gespeichert. Panel1.Caption:=text2; //die wird im panel feld ausgegeben. end; |
Re: Bestimmte Zeichen im String durch andere ersetzen!?
schrittweise nacheinander.
|
Re: Bestimmte Zeichen im String durch andere ersetzen!?
mehrere StringReplace hintereinander wären eine Lösung oder dann eben mit der For-Schleife
|
Re: Bestimmte Zeichen im String durch andere ersetzen!?
aber wenn ich
Delphi-Quellcode:
mache, dann ersetzt es immer nur das letzte. also die Bs duch Fs.
procedure TForm1.Button1Click(Sender: TObject);
var text: string; text2: string; begin text := edit1.text; text2:=StringReplace(text,'a','e',[rfReplaceAll, rfIgnoreCase]); text2:=StringReplace(text,'b','f',[rfReplaceAll, rfIgnoreCase]); Panel1.Caption:=text2; end; |
Re: Bestimmte Zeichen im String durch andere ersetzen!?
guck mal was du StringReplace übergibst.
text? //Edit1 Man nennt keine variable Text, kann zu problemen mit der Form kommen. |
Re: Bestimmte Zeichen im String durch andere ersetzen!?
Mit zwei verschachtelten For-Schleifen und zwei Arrays of Char könnte man das auch sehr schön hinkriegen.
Achja und wenn das System so weitergehen soll, also a->e, b->f, c->g, ..., z->d, dann kannst du das auch einfacher hinkriegen. @fwsp: Kann es nicht. Lokale Variablen und Parameter haben Vorrang vor Felder der Klasseninstanz. |
Re: Bestimmte Zeichen im String durch andere ersetzen!?
Nicht wenn man gerne logische Fehler macht, so wie es auch hier beim ersetzen vorkommt. :stupid:
|
Re: Bestimmte Zeichen im String durch andere ersetzen!?
Höa? Was meinst du? :gruebel:
|
Re: Bestimmte Zeichen im String durch andere ersetzen!?
Delphi-Quellcode:
text2:=StringReplace(text,'a','e',[rfReplaceAll, rfIgnoreCase]);
text2:=StringReplace(text,'b','f',[rfReplaceAll, rfIgnoreCase]);
Delphi-Quellcode:
wo ist der unterschied?
text2 := StringReplace(text, 'a', 'e', [rfReplaceAll, rfIgnoreCase]);
text2 := StringReplace(text2, 'b', 'f', [rfReplaceAll, rfIgnoreCase]); |
Re: Bestimmte Zeichen im String durch andere ersetzen!?
Wird das jetzt hier so ein Suchbild wie bei 9 Live? Wo ist der Fehler? :lol:
Die 2 ist ja kaum zu übersehen und mit etwas hinschauen dürfte man den Fehler recht schnell bemerken. Und das hat doch absolut gar nichts mit der Form zu tun, oder? |
Re: Bestimmte Zeichen im String durch andere ersetzen!?
aber das mit text sollte man vermeiden, imho.
|
Re: Bestimmte Zeichen im String durch andere ersetzen!?
sollte man, wenn man jetzt oben noch ein
Delphi-Quellcode:
stehen hat, gibt das mächtige probleme.
with Edit2 do
|
Re: Bestimmte Zeichen im String durch andere ersetzen!?
Nein, hat man nicht. Lokale Variablen haben Vorrang, auch vor Feldern und Propertys in with-Blöcken.
|
Re: Bestimmte Zeichen im String durch andere ersetzen!?
Stimmt eigentlich. Ich habe jedoch die erfahrung gemacht, das man immer aussagekräftige Variablennamen vergibt, damit ein anderer es auch versteht, wenn er es evtl. weiterentwickeln will/soll.
|
Re: Bestimmte Zeichen im String durch andere ersetzen!?
Zitat:
Delphi-Quellcode:
einen leeren String ausspuckt[1] :P :mrgreen:
var
text: string; begin with edit1 do text := 'asdf'; ShowMessage(text); :zwinker: Es ist nicht immer auf den ersten Blick zu erkennen, auf was sich die Variable bezieht, von daher kanns gern zu schwierigkeiten kommen. (Vor allem, weil die Frage aufkommt: Wie um Himmels willen greife ich jetzt im with-Block auf die lokale Variable 'text' zu? ^^) Was das Ausgangsproblem selbst betrifft, wuerde ich die 2 Forschleifen verwenden. StringReplace ist etwas speicheraufwaendiger und zeitintensiver ;) [1]Getestet unter D7 greetz Mike |
Re: Bestimmte Zeichen im String durch andere ersetzen!?
In der Code-Lib gibt es ein StringReplace mit dem man mehrerer Zeichen ersetzen kann.
|
Re: Bestimmte Zeichen im String durch andere ersetzen!?
Hi,
das hier kommt aus der Delphi Hilfe
Delphi-Quellcode:
erfüllt doch seinen Zweck
var S: string;
begin S := ' 123,5'; { Leerzeichen in Nullen umwandeln } while Pos(' ', S) > 0 do S[Pos(' ', S)] := '0'; end; |
Re: Bestimmte Zeichen im String durch andere ersetzen!?
Moin LuckyGee,
wenn Du wirklich nur einzelne Zeichen ersetzten willst, solltest Du Dich mal näher mit dem Beitrag von mr.winkle (zweites Posting) beschäftigen. StringReplace ist zwar einfach anzuwenden, hat aber den Nachteil, dass es nicht sehr performant ist (das ist halt der Preis für den Komfort ;-)) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:55 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 by Thomas Breitkreuz