Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Teil eines Strings ersetzen..


SteheAufDerLeitung - Do 30.08.07 12:11
Titel: Teil eines Strings ersetzen..
Hallo!!

Ich habe einen String, beispielsweise folgender Art:

'FEST%Teilstring%NOCHMALFEST'

Sicherlich gibt es doch eine Funktion, mit der man '%Teilstring%' durch 'BLA' oder 'BlaBlaBlaBlaBlaBlaBla' ersetzen kann, oder?
Wichtig ist, dass der neue String nicht die gleiche Länge wie der alte '%Teilstring%' hat.

Mit Delete() kann ich einen Teilstring entfernen. Mit Insert() kann ich einen einfügen. Gibt es denn aber keine Funktion, die etwas 'replaced'?? Replace() gibts nämmüsch nüsch.. ;-)

Grüße

Sebastian


azrael_7 - Do 30.08.07 12:17

Ist der Teilstring immer mit % umrahmt?

Wenn ja, wär eine Idee, den kompletten String in drei teile zu zerlegen - Anhand der %-Zeichens lassen sich die Teilstrings finden... .


Quelltext
1:
2:
3:
String1 := 'FEST%';
String2 := 'Teilstring';
String3 := '%NOCHMALFEST';


Dann String 2 durch deinen Text ersetzten und wieder zusammenbauen..


Quelltext
1:
2:
String2 := 'BlaBlaBlaBlaBla';
komplettstring := String1 + String2 + String3;


Jakob Schöttl - Do 30.08.07 12:37

da gibts einige String-Befehle:
Insert, Replace, Copy
und Replace ist wohl das was du suchst.


matze - Do 30.08.07 12:57

oder du machst das mit Regulären Ausdrücken: Suche in der Entwickler-Ecke REGEXPR
Aber mit Copy, Pos und so weiter bist du mit Sicherheit besser bedient, weil einfacher.


SteheAufDerLeitung - Do 30.08.07 13:03
Titel: So isses!!
Habs auch genauso gemacht. Die Strings sind immer von %-Zeichen umrahmt. Hab die Positionen ermittelt, mit Delete() deleted und geInsert()ed :-D

Passt so - wunderbar! Dankeschön..


alzaimar - Do 30.08.07 14:01


Delphi-Quelltext
1:
TheLoesung := StringReplace('Foo%WegDamit%bar','%WegDamit%','>HerDamit<',[rfReplaceAll, rfCaseInsensitive]);                    

Also: StringReplace (S1,S2,S3, Flags) ersetzt Vorkommen des Strings S2 in S1 durch S3.
Wenn rfReplace in Flags enthalten ist, dann werden ALLE Strings ersetzt.
Wenn rfCaseInsensitive in Flags enthalten ist, dann ist die Groß/Kleinschreibung egal.