Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Bestimmte Zeichen im String durch andere ersetzen!? (https://www.delphipraxis.net/76306-bestimmte-zeichen-im-string-durch-andere-ersetzen.html)

LukeGee 1. Sep 2006 19:34


Bestimmte Zeichen im String durch andere ersetzen!?
 
Hallo,

wie kann ich bestimmte Buchstaben bzw. Zeichen in einem String durch andere ersetzen?

Danke.

MfG

mkinzler 1. Sep 2006 19:35

Re: Bestimmte Zeichen im String durch andere ersetzen!?
 
StringReplace/AnsiStringReplace

mr.winkle 1. Sep 2006 19:38

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';

Cyberbob 1. Sep 2006 20:01

Re: Bestimmte Zeichen im String durch andere ersetzen!?
 
Oder mit der Funktion Translate()


Siehe hier

LukeGee 3. Sep 2006 22:58

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:
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;
aber wie mach ich das, wenn ich mehrere verschiedene zeichen ersetzen lassen will?

fwsp 3. Sep 2006 22:59

Re: Bestimmte Zeichen im String durch andere ersetzen!?
 
schrittweise nacheinander.

SirThornberry 3. Sep 2006 22:59

Re: Bestimmte Zeichen im String durch andere ersetzen!?
 
mehrere StringReplace hintereinander wären eine Lösung oder dann eben mit der For-Schleife

LukeGee 3. Sep 2006 23:02

Re: Bestimmte Zeichen im String durch andere ersetzen!?
 
aber wenn ich

Delphi-Quellcode:
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;
mache, dann ersetzt es immer nur das letzte. also die Bs duch Fs.

fwsp 3. Sep 2006 23:03

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.

3_of_8 3. Sep 2006 23:05

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.

fwsp 3. Sep 2006 23:07

Re: Bestimmte Zeichen im String durch andere ersetzen!?
 
Nicht wenn man gerne logische Fehler macht, so wie es auch hier beim ersetzen vorkommt. :stupid:

3_of_8 3. Sep 2006 23:10

Re: Bestimmte Zeichen im String durch andere ersetzen!?
 
Höa? Was meinst du? :gruebel:

fwsp 3. Sep 2006 23:12

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:
  text2 := StringReplace(text, 'a', 'e', [rfReplaceAll, rfIgnoreCase]);
  text2 := StringReplace(text2, 'b', 'f', [rfReplaceAll, rfIgnoreCase]);
wo ist der unterschied?

3_of_8 3. Sep 2006 23:20

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?

fwsp 3. Sep 2006 23:21

Re: Bestimmte Zeichen im String durch andere ersetzen!?
 
aber das mit text sollte man vermeiden, imho.

Cyberbob 3. Sep 2006 23:46

Re: Bestimmte Zeichen im String durch andere ersetzen!?
 
sollte man, wenn man jetzt oben noch ein
Delphi-Quellcode:
with Edit2 do
stehen hat, gibt das mächtige probleme.

3_of_8 3. Sep 2006 23:49

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.

Cyberbob 4. Sep 2006 00:02

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.

JasonDX 4. Sep 2006 00:09

Re: Bestimmte Zeichen im String durch andere ersetzen!?
 
Zitat:

Zitat von 3_of_8
Nein, hat man nicht. Lokale Variablen haben Vorrang, auch vor Feldern und Propertys in with-Blöcken.

Doch, zumindest du haettest es. Du wuerdest dich zumindest wundern, warum in Gottes Namen
Delphi-Quellcode:
var
  text: string;
begin
  with edit1 do
    text := 'asdf';
  ShowMessage(text);
einen leeren String ausspuckt[1] :P :mrgreen:
: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

Luckie 4. Sep 2006 06:18

Re: Bestimmte Zeichen im String durch andere ersetzen!?
 
In der Code-Lib gibt es ein StringReplace mit dem man mehrerer Zeichen ersetzen kann.

uwewo 4. Sep 2006 06:26

Re: Bestimmte Zeichen im String durch andere ersetzen!?
 
Hi,

das hier kommt aus der Delphi Hilfe

Delphi-Quellcode:
var S: string;

begin
  S := '  123,5';
  { Leerzeichen in Nullen umwandeln }
  while Pos(' ', S) > 0 do
    S[Pos(' ', S)] := '0';
end;
erfüllt doch seinen Zweck

Christian Seehase 4. Sep 2006 13:05

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 01:57 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