替换RTF字符串中的文本 - 不保留结果

时间:2012-09-06 20:22:06

标签: rtf

对于这个蹩脚的头衔感到抱歉,但想不出更好的方式来说出来,并且对此有几天Bingleing。

我有一个读取RTF文件的代码,我已将其放在占位符中以充当合并字段。代码将替换文本,但是当文件保存回来时,新值不会显示。

var fileName = @"C:\Users\James\SkyDrive\Sandbox\MailMerge\MailMerge\templates\Template1.rtf";
StreamReader sr = new StreamReader(fileName);
string text = sr.ReadToEnd();
sr.Close();
text = text.Replace("{\\{Title\\}\\}", "Mr.");
text = text.Replace("{\\{LastName\\}\\}", "Johnson");
text = text.Replace("{\\{FirstName\\}\\}", "James");

替换前的RTF:     {\ rtf1 \ ansi \ ansicpg1252 \ deff0 \ nouicompat \ deflang1033 {\ fonttbl {\ f0 \ fnil \ fcharset0 Calibri;}}     {* \ generator Riched20 6.2.9200} \ viewkind4 \ uc1     \ pard \ sa200 \ sl276 \ slmult1 \ f0 \ fs22 \ lang9嗨{{Title}} {{LastName}} \ par     你好吗,{{FirstName}} \ par     }

替换后的RTF:     {\ rtf1 \ ansi \ ansicpg1252 \ deff0 \ nouicompat \ deflang1033 {\ fonttbl {\ f0 \ fnil \ fcharset0 Calibri;}}     {* \ generator Riched20 6.2.9200} \ viewkind4 \ uc1     \ pard \ sa200 \ sl276 \ slmult1 \ f0 \ fs22 \ lang9嗨\先生。 \约翰逊\看齐     你好吗,詹姆斯\帕尔     }

保存并在记事本中打开后

RTF:     {\ rtf1 \ ansi \ ansicpg1252 \ deff0 \ deflang1033 {\ fonttbl {\ f0 \ fnil \ fcharset0 Calibri;}}     \ viewkind4 \ uc1 \ pard \ sa200 \ sl276 \ slmult1 \ lang9 \ f0 \ fs22嗨。 \看齐     你好吗,\ par     }

我还需要做一些其他步骤,这会以正确的格式保存文件吗?我也尝试过使用RichTextBox控件,将字符串加载到其中,然后调用Save()方法。这给了我相同的结果。

谢谢, 詹姆斯

在阅读本文Cleaning up RTF text并使用以下代码后想出来:

var fileName = @"C:\Users\James\SkyDrive\Sandbox\MailMerge\MailMerge\templates\Template1.rtf";
StreamReader sr = new StreamReader(fileName);
string text = sr.ReadToEnd();
sr.Close();
rtb.Rtf = text;
rtb.Text = rtb.Text.Replace("{{Title}}", "Mr.");
rtb.Text = rtb.Text.Replace("{{LastName}}", "Johnson");
rtb.Text = rtb.Text.Replace("{{FirstName}}", "James");
rtb.SaveFile(@"C:\Users\James\SkyDrive\Sandbox\MailMerge\MailMerge\templates\Johnson2.rtf");

0 个答案:

没有答案