Ersetze einen Unterstring eines Stringes durch einen anderen String.
Ersetze einen Unterstring eines Stringes durch einen anderen String.
Name | Typ | Default | Beschreibung |
Return | char* | Zeiger auf den Eingabestring. Der Eingabestring wird verändert. Er muss über genügend Speicherplatz verfügen. | |
str | char* | - | String, in dem die Ersetzung(en) gemacht werden sollen. |
search | char* | - | Zu ersetzende Zeichenkette [Ab v3.2.3 R2600, 08.08.2011] Der Suchstring darf ein regulärer Ausdruck sein. Reguläre Ausdrücke werden mit dem Präfix "regexp:" gekennzeichnet. [Ab v3.3 R4000, 4. Jul 2013] Bei Verwendung des Präfixes "pcre:" ('perl compatible regular expressions') wird eine neuere Implementierung zur Berechnung regulärer Ausdrücke verwendet. Wir empfehlen die Verwendung dieses Verfahrens. Die alte Implementierung bleibt aus Gründen der Rückwärtskompatibilität erhalten. Ab v3.4 R9000 und CS5 werden reguläre Ausdrücke ausschließlich durch PCRE verarbeitet. Mit regexp: markierte Ausdrücke werden automatisch an PCRE weitergeleitet. Lediglich CS4 verwendet weiter die alte Implementierung für GNU-kompatible reguläre Ausdrücke. |
replace | char* | - | Einzusetzende Zeichenkette |
doAll | int | 1 | 0 : Nur das erste Auftreten ersetzen 1 : Alle Auftreten ersetzen |
startPos | int | 0 | Ab dieser Textposition mit dem Ersetzen beginnen. Der Parameter wird nur beim Suchen und Ersetzen regulärer Ausdrücke verwendet. |
compile_options | int | 0 | Zusatzoptionen beim Kompilieren des regulären Ausdruckes, siehe hier |
study_options | int | 0 | Zusatzoptionen beim Untersuchen des kompilierten regulären Ausdruckes, siehe hier |
exec_options | int | 0 | Zusatzoptionen beim Suchen des regulären Ausdruckes, siehe hier |
strcpy (str, "Matthias");
strreplace (str, "tt", "t") ergibt "Mathias" strreplace (str, "a", "aAa") ergibt "MaAathiaAas"
Bei allen dreistelligen Zahlen, die in Kleinbuchstaben eingeschlossen sind, werden diese Buchstaben getauscht.
int main () { char regex [200]; char repl [200]; String str = string::alloc (); char txt [20000];
// Regular expression strcpy (regex, "pcre:"); strcat (regex, "([a-z])([1-9]{3})([a-z])");
// Replace strcpy (repl, "\\3\\2\\1");
// Text frame::gettext (gFrame, str); strcpy (txt, string::get (str));
// Real work strreplace (txt, regex, repl); frame::replace (gFrame, txt);
return 0; }
Färbe alle TaggedText-Tags. Die Farben ändern sich pro Tag immer ein wenig - Spielerei :-) Tags sollen darüber hinaus immer auf einer neuen Zeile beginnen..
int main () { String str = string::alloc (); char tmp [20000]; char col [500]; int r =255, g = 0, b = 0; int ro = 8; int go = 16; int bo = 24;
textmodel::gettext (str); strcpy (tmp, string::get (str));
strreplace (tmp, "pcre:(<[a-zA-Z][a-zA-Z0-9_]*\\:(<)?)((([^><])|(\\\\>)|(\\\\<))*)(>)*", "\nccccColorRot\\0ccccColor"); strreplace (tmp, "<", "<0x003C>");
while (strstrpos (tmp, "ccccColorRot") >= 0) { sprintf (col, "<cColor:%d, %d, %d><cFont:Verdana,Italic>", r, g, b);
if (r+ro > 255 || r +ro < 0) ro = (-1)*ro; if (g+go > 255 || g +go < 0) go = (-1)*go; if (b+bo > 255 || b +bo < 0) bo = (-1)*bo;
r = r + ro; g = g + go; b = b + bo;
strreplace (tmp, "ccccColorRot", col, 0); } strreplace (tmp, "ccccColor", "<cFont:><cColor:>");
textmodel::replace (tmp);
return 0; }
Eine Testdatei (CS5.5) für reguläre Ausdrücke finden Sie hier:
Testdatei
Regular expression working with "pcre:" but not with "regexp:"
int main () { char str [512];
strcpy (str, "abc11188888#defgh11177777#hijklmn11166666#opqäöü55555#qwertzu11144444#XYZ"); wlog ("", "PRE : '%s'\n", str);
strreplace (str, "pcre:([0-9]{6})(#)", "\\2\\1", 1); wlog ("", "POST : '%s'\n", str);
return 0; }
Alphabetic index HTML hierarchy of classes or Java