ReplaceRTF()
ReplaceRTF() – Ersetzen von formatiertem RTF Text
Mit dieser Funktion lassen sich formatierte Zeichenketten in einem RTF-Text durch ebenfalls formatierten RTF-Text oder durch Plaintext ersetzen.
Die Formatierung des neuen Texts wird hierbei beibehalten.
Es werden nur ganze Wörter gesucht/ersetzt: Beispielsweise wird bei einer Suche nach "TEST" der Ausdruck "TEST123" nicht berücksichtigt./
Parameter | Beschreibung |
---|---|
cText:C | Formatierter Text, in dem eine Zeichenkette ersetzt werden soll |
cSearchFor:C | Text, der im gesamten cText ersetzt werden soll, z. B. das Wort "TEST" |
cReplaceWith:C | Un-/Formatierter Text, der anstelle des Suchworts eingefügt werden soll. |
bIgnoreCase:L | Groß-/Kleinschreibung bei der Suche nach cSearchFor beachten |
cDelimiters:C | Liste an Zeichen, die als Worttrenner gesehen werden sollen. |
Rückgabewert
Alphanumerisch
Beispiel
| cText, cSearchFor, cReplaceWith, cNewText1, cNewText2, cNewText3 |
// Das Wort TEST mit ST fett formatiert
cText := '{\rtf1\ansi\ansicpg0\uc1\deff0\deflang0\deflangfe0{\fonttbl{\f0\fnil Arial;}}' +
'{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;' +
'\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;' +
'\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;' +
'\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;' +
'\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}' +
'\pard\fi0\li0\ql\ri0\sb0\sa0\itap0 \plain \f0\fs20 TE' +
'\plain \f0\b\fs20 ST @TEST\par}',
// Das Wort, das ersetzt werden soll
cSearchFor := 'Test',
// ABCD komplett fett formatiert
cReplaceWith := '{\rtf1\ansi\ansicpg0\uc1\deff0\deflang0\deflangfe0{\fonttbl{\f0\fnil Arial;}}' +
'{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;' +
'\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;' +
'\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;' +
'\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;' +
'\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;' +
'\red192\green192\blue192;}' +
'\pard\fi0\li0\ql\ri0\sb0\sa0\itap0 \plain \f0\b\fs20 ABCD\par}',
cNewText1 := ReplaceRTF(cText, cSearchFor, cReplaceWith), // Mit diesem Aufruf wird die Groß-/Kleinschreibung berücksichtigt
writeln(RTFToText(cNewText1)), // Ausgabe von TEST @TEST, da hier das Wort aufgrund der Groß-/Kleinschreibung
// nicht exakt übereinstimmt (Unformatiert aufgrund von RTFToText)
cNewText2 := ReplaceRTF(cText, cSearchFor, cReplaceWith, True), // Mit diesem Aufruf wird die Groß-/Kleinschreibung NICHT berücksichtigt.
writeln(RTFToText(cNewText2)), // Ausgabe von ABCD @TEST (Unformatiert aufgrund von RTFToText)
// Bisher wird das TEST hinter dem @ nicht ersetzt, da das @ sich nicht in den Default-Delimitern befindet.
// Daraus ergeben sich folgende Konstellationen
// Angabe von "@" als einzigen Delimiter
cNewText1 := ReplaceRTF(cText, cSearchFor, cReplaceWith, True, '@'),
writeln(RTFToText(cNewText1)), // Ausgabe von TEST @ABCD (Nur das '@' gilt als Worttrennung)
// Angabe von "@ " als Delimiters (Gesprochen: "At und Leerzeichen")
cNewText1 := ReplaceRTF(cText, cSearchFor, cReplaceWith, True, '@ '),
writeln(RTFToText(cNewText1)), // Ausgabe von ABCD @ABCD
// Für eine sichtbare Formatierung wird beispielsweise ein TRichEdit benötigt, in das der Text geschrieben werden kann.