Autor Beitrag
DevInet
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP, Win 7 Prof., Linux Mandriva
C#(VS 2010), Java, php
BeitragVerfasst: Mo 23.08.10 15:23 
Hallo zusammen.

Ich habe ein Problem mit meinem Programm zum generieren von Outlook-Signaturen.
Ich will für Outlook eine Signatur als .rtf-Datei erstellen.
Hierzu habe ich eine Basis-Datei erstellt, welche Platzhalter für die relevanten Daten enthält. Einer dieser Platzhalter steht für Events, welche einen Link enthalten. Mit Perl funktioniert das ganze auch wunderbar. Aber wenn ich das mit meinem C#-Programm per Regex ersetze funktioniert das ganze nicht.
Ich hoffe einer von euch kann mir da weiterhelfen.

Programm-Code:
ausblenden C#-Quelltext
1:
string ersatz3 = Regex.Replace(entry, exp3, "\\{\\rtlch\\fcs1 \\af1\\afs16 \\ltrch\\fcs0 \\f1\\fs16\\cf17\\insrsid15890944 \\hich\\af1\\dbch\\af31505\\loch\\f1 Am }" + "{\\rtlch\\fcs1 \\af1\\afs16 \\ltrch\\fcs0 \\b\\f1\\fs16\\cf17\\insrsid12795575 \\hich\\af1\\dbch\\af31505\\loch\\f1 "+ evdatum + "}{\\rtlch\\fcs1 \\af1\\afs16 \\ltrch\\fcs0 \\b\\f1\\fs16\\cf17\\insrsid15890944\\charrsid15890944 \\hich\\af1\\dbch\\af31505\\loch\\f1 :}" + "{\\rtlch\\fcs1 \\af1\\afs16 \\ltrch\\fcs0 \\f1\\fs16\\cf17\\insrsid15890944 \\hich\\af1\\dbch\\af31505\\loch\\f1  }" + "{\\field\\fldedit{\\*\\fldinst {\\rtlch\\fcs1 \\af1\\afs16 \\ltrch\\fcs0 \\f1\\fs16\\cf17\\insrsid11938771\\charrsid4074067 \\hich\\af1\\dbch\\af31505\\loch\\f1  HYPERLINK \"" + evlink + "\" }{\\rtlch\\fcs1 \\af1\\afs16 \\ltrch\\fcs0 \\f1\\fs16\\cf17\\insrsid11354410charrsid4074067}}" + "{\\fldrslt {\\rtlch\\fcs1 \\af1\\afs16 \\ltrch\\fcs0 \\f1\\fs16\\cf17\\insrsid12795575 \\hich\\af1\\dbch\\af31505\\loch\\f1 " + evtext + "}}}\\sectd \\ltrsect \\linex0\\endnhere\\sectdefaultcl\\sftnbj {\\rtlch\\fcs1 \\af1\\afs16 \\ltrch\\fcs0 \\f1\\fs16\\cf17\\insrsid4930345\\charrsid4074067 \\par }\\");					


rtf-Code in der per C# generierten Datei:
ausblenden Quelltext
1:
\par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13303839 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid13513359 \hich\af31506\dbch\af31505\loch\f31506  \{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf17\insrsid15890944 \hich\af1\dbch\af31505\loch\f1 Am }{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \b\f1\fs16\cf17\insrsid12795575 \hich\af1\dbch\af31505\loch\f1 23.06.2010}{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \b\f1\fs16\cf17\insrsid15890944\charrsid15890944 \hich\af1\dbch\af31505\loch\f1 :}{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf17\insrsid15890944 \hich\af1\dbch\af31505\loch\f1  }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf17\insrsid11938771\charrsid4074067 \hich\af1\dbch\af31505\loch\f1  HYPERLINK "http://www.r-tec.net/Veranstaltungen/Workshops/Security-Tag-23-Juni/index.htm" }{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf17\insrsid11354410charrsid4074067}}{\fldrslt {\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf17\insrsid12795575 \hich\af1\dbch\af31505\loch\f1 r-tec IT Security Tag}}}\sectd \ltrsect \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf17\insrsid4930345\charrsid4074067 \par }\}{\rtlch\fcs1 \af0 \ltrch\fcs0					


rtf-Code in der per Perl generierten Datei:
ausblenden Quelltext
1:
\par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13303839 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid13513359 \hich\af31506\dbch\af31505\loch\f31506  {\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf17\insrsid15890944 \hich\af1\dbch\af31505\loch\f1 Am }{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \b\f1\fs16\cf17\insrsid12795575 \hich\af1\dbch\af31505\loch\f1 23.09.2010}{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \b\f1\fs16\cf17\insrsid15890944\charrsid15890944 \hich\af1\dbch\af31505\loch\f1 :}{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf17\insrsid15890944 \hich\af1\dbch\af31505\loch\f1  }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf17\insrsid11938771\charrsid4074067 \hich\af1\dbch\af31505\loch\f1  HYPERLINK "http://www.r-tec.net/Veranstaltungen/Workshops/Kunden-Tag-23-September/index.htm" }{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf17\insrsid11354410arrsid4074067}}{\fldrslt {\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf17\insrsid12795575 \hich\af1\dbch\af31505\loch\f1 r-tec Kundentag im Golden Tulip in Wuppertal}}}\sectd \ltrsect \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf17\insrsid4930345\charrsid4074067 \par }}{\rtlch\fcs1 \af0 \ltrch\fcs0					


Mfg
DevInet
DevInet Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP, Win 7 Prof., Linux Mandriva
C#(VS 2010), Java, php
BeitragVerfasst: Mo 23.08.10 16:50 
Hat sich erledigt.

Der Fehler sieht wie folgt aus!

Alter Code:
ausblenden C#-Quelltext
1:
string ersatz3 = Regex.Replace(entry, exp3, "\\{\\rtlch\\fcs1 \\af1\\afs16 \\ltrch\\fcs0 \\f1\\fs16\\cf17\\insrsid15890944 \\hich\\af1\\dbch\\af31505\\loch\\f1 Am }" + "{\\rtlch\\fcs1 \\af1\\afs16 \\ltrch\\fcs0 \\b\\f1\\fs16\\cf17\\insrsid12795575 \\hich\\af1\\dbch\\af31505\\loch\\f1 "+ evdatum + "}{\\rtlch\\fcs1 \\af1\\afs16 \\ltrch\\fcs0 \\b\\f1\\fs16\\cf17\\insrsid15890944\\charrsid15890944 \\hich\\af1\\dbch\\af31505\\loch\\f1 :}" + "{\\rtlch\\fcs1 \\af1\\afs16 \\ltrch\\fcs0 \\f1\\fs16\\cf17\\insrsid15890944 \\hich\\af1\\dbch\\af31505\\loch\\f1  }" + "{\\field\\fldedit{\\*\\fldinst {\\rtlch\\fcs1 \\af1\\afs16 \\ltrch\\fcs0 \\f1\\fs16\\cf17\\insrsid11938771\\charrsid4074067 \\hich\\af1\\dbch\\af31505\\loch\\f1  HYPERLINK \"" + evlink + "\" }{\\rtlch\\fcs1 \\af1\\afs16 \\ltrch\\fcs0 \\f1\\fs16\\cf17\\insrsid11354410charrsid4074067}}" + "{\\fldrslt {\\rtlch\\fcs1 \\af1\\afs16 \\ltrch\\fcs0 \\f1\\fs16\\cf17\\insrsid12795575 \\hich\\af1\\dbch\\af31505\\loch\\f1 " + evtext + "}}}\\sectd \\ltrsect \\linex0\\endnhere\\sectdefaultcl\\sftnbj {\\rtlch\\fcs1 \\af1\\afs16 \\ltrch\\fcs0 \\f1\\fs16\\cf17\\insrsid4930345\\charrsid4074067 \\par }\\");					


Neuer Code:
ausblenden C#-Quelltext
1:
string ersatz3 = Regex.Replace(entry, exp3, "{\\rtlch\\fcs1 \\af1\\afs16 \\ltrch\\fcs0 \\f1\\fs16\\cf17\\insrsid15890944 \\hich\\af1\\dbch\\af31505\\loch\\f1 Am }" + "{\\rtlch\\fcs1 \\af1\\afs16 \\ltrch\\fcs0 \\b\\f1\\fs16\\cf17\\insrsid12795575 \\hich\\af1\\dbch\\af31505\\loch\\f1 "+ evdatum + "}{\\rtlch\\fcs1 \\af1\\afs16 \\ltrch\\fcs0 \\b\\f1\\fs16\\cf17\\insrsid15890944\\charrsid15890944 \\hich\\af1\\dbch\\af31505\\loch\\f1 :}" + "{\\rtlch\\fcs1 \\af1\\afs16 \\ltrch\\fcs0 \\f1\\fs16\\cf17\\insrsid15890944 \\hich\\af1\\dbch\\af31505\\loch\\f1  }" + "{\\field\\fldedit{\\*\\fldinst {\\rtlch\\fcs1 \\af1\\afs16 \\ltrch\\fcs0 \\f1\\fs16\\cf17\\insrsid11938771\\charrsid4074067 \\hich\\af1\\dbch\\af31505\\loch\\f1  HYPERLINK \"" + evlink + "\" }{\\rtlch\\fcs1 \\af1\\afs16 \\ltrch\\fcs0 \\f1\\fs16\\cf17\\insrsid11354410charrsid4074067}}" + "{\\fldrslt {\\rtlch\\fcs1 \\af1\\afs16 \\ltrch\\fcs0 \\f1\\fs16\\cf17\\insrsid12795575 \\hich\\af1\\dbch\\af31505\\loch\\f1 " + evtext + "}}}\\sectd \\ltrsect \\linex0\\endnhere\\sectdefaultcl\\sftnbj {\\rtlch\\fcs1 \\af1\\afs16 \\ltrch\\fcs0 \\f1\\fs16\\cf17\\insrsid4930345\\charrsid4074067 \\par }");					


Mfg DevInet
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: Mo 23.08.10 16:54 
und da brauchst Du echt so einen langen regulären Ausdruck, nur um an den Hyperlink zu kommen :shock:

Ist die Stelle denn so uneindeutig?
DevInet Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP, Win 7 Prof., Linux Mandriva
C#(VS 2010), Java, php
BeitragVerfasst: Di 24.08.10 17:58 
Der Ausdruck enthält ja nicht nur den Hyperlink, sondern auch noch eine Zusatzinformation, einen Text der den Hyperlink maskiert und die ganzen Werte für Schriftgrösse, Farbe, etc.

Mfg DevInet