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; }

Seit
Version 1.2.1 (12. September 2005)
Reguläre Ausdrücke seit v3.2.3 R2600, 08.08.2011
Reguläre Ausdrücke mit "pcre:" seit v3.3.1 R4000, 4. Jul 2013 compile_options, study_options, exec_options seit v4.0.5 R20456, 10. Okt 2017

Verfügbarkeit
priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

Alphabetic index HTML hierarchy of classes or Java