[delphi] een string wijzigen

Pagina: 1
Acties:

  • Engineer
  • Registratie: Juni 2001
  • Laatst online: 05-12 14:56
Hoi,
weet iemand hoe ik in delphi een aantal letters van een string kan wijzigen? :)

thnx

  • Tim Schuhmacher
  • Registratie: Januari 2000
  • Laatst online: 20-12 12:25

Tim Schuhmacher

abasios

al de help van delphi bekeken en wees duidelijk, want dit zul je wel niet bedoelen:

str := klaas;
str := kluis;

Verwijderd

code:
1
2
3
4
5
6
var s : string;
begin
s := 'voor'
s[2] := 'i'  { s = 'vior' }
s[3] := 'e'  { s = 'vier' }
end;

Ik weet dat Delphi help soms onduidelijk kan zijn ;)

  • Engineer
  • Registratie: Juni 2001
  • Laatst online: 05-12 14:56
Op zaterdag 22 september 2001 17:33 schreef Tim Schuhmacher het volgende:
al de help van delphi bekeken en wees duidelijk, want dit zul je wel niet bedoelen:

str := klaas;
str := kluis;
Een aantal letters van een string wijzigen had ik het over :)

  • Tim Schuhmacher
  • Registratie: Januari 2000
  • Laatst online: 20-12 12:25

Tim Schuhmacher

abasios

Nou ja een for loopje pakken van 0 tot length(str)-1 en dan str[i]

  • Engineer
  • Registratie: Juni 2001
  • Laatst online: 05-12 14:56
Op zaterdag 22 september 2001 17:39 schreef Lynx666 het volgende:
code:
1
2
3
4
5
6
var s : string;
begin
s := 'voor'
s[2] := 'i'  { s = 'vior' }
s[3] := 'e'  { s = 'vier' }
end;

Ik weet dat Delphi help soms onduidelijk kan zijn ;)
Ik wou eigelijk wat uit een complete tekst wijzigen, dat gaat een beetje moeilijk als ik het letter voor letter het moet uit tellen :P

Verwijderd

Op zaterdag 22 september 2001 17:42 schreef Tim Schuhmacher het volgende:
Nou ja een for loopje pakken van 0 tot length(str)-1 en dan str[i]
jij begint te indexeren bij 0, str[0] geeft de lengte van de string aan en delphi geeft dan een foutmelding aan. De string begint bij str[1]

maar om terug te komen op hdd's probleem:
Wat je zou kunnen doen is:
code:
1
2
3
4
5
6
7
8
9
procedure Replace(var s : string; repl, with : string);
var sub1, sub2 : string;
    idx : byte;
begin
idx := pos(repl,s);
sub1 := copy(s,1,idx-1);
sub2 := copy(s,idx+Length(repl),Length(s)-(idx+Length(repl));
s := sub1+with+sub2;
end;

voorbeeld:
code:
1
2
3
4
5
var str : string;
begin
str := 'hallo mensen';
Replace(str, 'mensen','jongens'); {str = 'hallo jongens'}
end;

Dit dan? :)

btw. dit heb ik dus nog niet getest, zal misschien nog een bugje inzitten, maar het gaat om het idee :)

Verwijderd

t idee werkt (uiteraard ook niet getest) je moet 't alleen nog ietsjes uitbreiden. Als je 'm 'hallo mensen mensen' vervangt ie alleen de 1e.

Verwijderd

Op zaterdag 22 september 2001 18:12 schreef Yarvieh het volgende:
t idee werkt (uiteraard ook niet getest) je moet 't alleen nog ietsjes uitbreiden. Als je 'm 'hallo mensen mensen' vervangt ie alleen de 1e.
goed, dan wordt ie zo :)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure Replace(var s : string; repl, with : string);
var sub1, sub2 : string;
    idx : byte;
begin
while pos(repl,s) > 0 do
  begin
  sub1 := ''; Sub2 := '';
  idx := pos(repl,s);
  If idx > 1 then 
    sub1 := copy(s,1,idx-1);
  If idx < Length(s)-Length(repl) then
    sub2 := copy(s,idx+Length(repl),Length(s)-(idx+Length(repl));
  s := sub1+with+sub2;
  end;
end;

nog een paar checks erbij voor de zekerheid :)

edit:

bugfix :)

  • Engineer
  • Registratie: Juni 2001
  • Laatst online: 05-12 14:56
Hij doet het :)

sinds die bugfix :P

  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 22:57

Delphi32

Heading for the gates of Eden

function StringReplace(string, oldpattern, newpattern, replaceflags): string;

check Delphi help. Is allang gemaakt (en maar goed ook). Als je als ReplaceFlag iig [rfReplaceAll] opneemt vervangt hij alle occurrences van oldpattern door newpattern.
Pagina: 1