[delphi] een string wijzigen

Pagina: 1
Acties:

  • Engineer
  • Registratie: Juni 2001
  • Laatst online: 11-06 11:18
Hoi,
weet iemand hoe ik in delphi een aantal letters van een string kan wijzigen? :)

thnx

  • Tim Schuhmacher
  • Registratie: Januari 2000
  • Laatst online: 10:34

Tim Schuhmacher

abasios

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

str := klaas;
str := kluis;

Anoniem: 5020

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: 11-06 11:18
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: 10:34

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: 11-06 11:18
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

Anoniem: 5020

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 :)

Anoniem: 12353

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.

Anoniem: 5020

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: 11-06 11:18
Hij doet het :)

sinds die bugfix :P

Acties:
  • 0 Henk 'm!

  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 12-06 22:24

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