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

Jam*_*son 5 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");
Run Code Online (Sandbox Code Playgroud)

替换前的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您好\先生。\ Johnson \ par你好吗,\ James \ par}

在记事本中保存并打开后的RTF: {\ rtf1 \ ansi \ ansicpg1252 \ deff0 \ deflang1033 {\ fonttbl {\ f0 \ fnil \ fcharset0 Calibri;}} \ viewkind4 \ uc1 \ pard \ sa200 \ sl276 \ slmult1 \ lang9 \ f0 \ fs22您好。\ par你好吗,\ par}

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

谢谢,詹姆斯

阅读这篇文章,清理RTF文本并使用以下代码后,请找出答案:

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");
Run Code Online (Sandbox Code Playgroud)