Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zeichen in einem String ersetzen??? (https://www.delphipraxis.net/71475-zeichen-einem-string-ersetzen.html)

EDatabaseError 15. Jun 2006 21:51


Zeichen in einem String ersetzen???
 
Hi, kleine Frage wie kann ich ein '#' in einem String durch ',' ersetzen???

Hab schon gesucht aber da steht nur was von StringReplace das mein D3 Prof. leider nicht kennt.


Mfg
Tobi

marabu 15. Jun 2006 21:58

Re: Zeichen in einem String ersetzen???
 
Hallo Tobi,

Löschen und Ersetzen kannst du auch mit der Funktion Translate().

Grüße vom marabu

Klaus01 15. Jun 2006 21:58

Re: Zeichen in einem String ersetzen???
 
oder so:

Delphi-Quellcode:
var
 
  s:String;

while pos('#',s) <> 0 do
  s[pos('#',s)]:=',';
Grüße
Klaus

DGL-luke 15. Jun 2006 21:59

Re: Zeichen in einem String ersetzen???
 
*Delphi 3 startet*

tasache, gibts nicht... aber in dem fall is es einfach:

Delphi-Quellcode:
for i := 1 to length(s) do
  if s[i] = '#' then s[i] := ',';
(sollte sogar performanter als generische funktionen sein, @marabu)
@Klaus01: Sehr viel unperformanter als meine Variante, bei mir wird der string nur einmal durchlafuen, bei dir sher oft ;)

Klaus01 15. Jun 2006 22:02

Re: Zeichen in einem String ersetzen???
 
@Lukas: chapeau

EDatabaseError 15. Jun 2006 22:03

Re: Zeichen in einem String ersetzen???
 
Zitat:

Zitat von Klaus01
oder so:

Delphi-Quellcode:
var
 
  s:String;

while pos('#',s) <> 0 do
  s[pos('#',s)]:=',';
Grüße
Klaus

danke geht...

DGL-luke 15. Jun 2006 22:07

Re: Zeichen in einem String ersetzen???
 
na wenn er schon seinen hut vor mir zieht...?

EDatabaseError 15. Jun 2006 22:17

Re: Zeichen in einem String ersetzen???
 
Zitat:

Zitat von DGL-luke
na wenn er schon seinen hut vor mir zieht...?

sry... hab deins übersehen. Ich nehm nu deins weils wirklich zeitsparender ist (0,00000000000000001 µs)


mfg
tobi

jmd anders 15. Jun 2006 22:51

Re: Zeichen in einem String ersetzen???
 
@ ed~

der geschwindigkeitsunterschied kommt bei sehr großen strings zum ausdruck. und dann kann das sogar en vielfaches sein.

DGL-luke 15. Jun 2006 23:08

Re: Zeichen in einem String ersetzen???
 
jop, pos macht nämlich nichts anderes als ich, nur dass es erstens zweimal aufgerufen wird bei jedem zu ersetzenden zeichen und zweitens - viel gravierender - den kompletten string durchsucht bis ein zu ersetzendes zeichen gefunden wird.

(außerdem müllts den callstack voll :stupid: )

Dax 15. Jun 2006 23:10

Re: Zeichen in einem String ersetzen???
 
Wenns wirklich total auf Speed ankommt müsst man auch statt
Delphi-Quellcode:
s[i] = '#'
//lieber
not Boolean(Ord(s[i]) xor Ord('#'))
verwenden können... Ord() is ja nix anderes als ein Typecast auf Byte :gruebel:

himitsu 16. Jun 2006 01:45

Re: Zeichen in einem String ersetzen???
 
Warum es mit Pos langsamer ist, kann man sich doch vorstellen, denn schließlich wird immer wieder der Sting von Anfang an durchsucht, selbst wenn schon ein Teil bearbeitet wurde und das immer wieder.

Delphi-Quellcode:
i := Pos('#', S);
While i > 0 do Begin
  S[i] := ',';
  i := PosEx('#', S, i + 1);
End;
Das könnte man zwar auch noch auf PChar umstellen, oder wenn man beim String bleiben will, dann ginge auch noch sowas ^^
Delphi-Quellcode:
UniqueString(S);
i := Pos('#', S);
While i > 0 do Begin
  PByte(@S[i])^ := Byte(',');
  i := PosEx('#', S, i + 1);
End;
Für PosEx gibt's ja 2 Versionen in der CodeLib, da es das erst seit D4 gibt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21: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 by Thomas Breitkreuz