使用Office.Interop.Word的C#将文本替换为多行



希望这个问题能找到你。

我开发了一个名为"CreateContract"的应用程序,因为合同是一个单词模板,这个应用程序的主要目标是用通过最终用户用windows表单键入的输入替换单词模板中的一些特定文本

如果我用一行的另一个文本替换文本,一切都很好,那么在使用RichTextBox控件用多行替换文本时就会出现问题。

我尝试了所有接下来的方法,但没有任何积极的结果:-

replaceWithText = replaceWithText.ToString().Replace(@"n", @"v"); 
replaceWithText = replaceWithText.ToString().Replace("\n", @"v");
replaceWithText = replaceWithText.ToString().Replace(@"n", @"r");
replaceWithText = replaceWithText.ToString().Replace(@"n", @"rn");
replaceWithText = replaceWithText.ToString().Replace(@"n", "u2028");

完整代码:-

static void FindAndReplace(Microsoft.Office.Interop.Word.Application fileOpen, object findText, object replaceWithText)
{
//replaceWithText = replaceWithText.ToString().Replace(@"n", @"v");
//replaceWithText = replaceWithText.ToString().Replace("\n", @"v");
//replaceWithText = replaceWithText.ToString().Replace("\n", @"r");
//replaceWithText = replaceWithText.ToString().Replace("\n", @"rn");
//replaceWithText = replaceWithText.ToString().Replace(@"n", "u2028");

object matchCase = false;
object matchWholeWord = true;
object matchWildCards = false;
object matchSoundsLike = false;
object matchAllWordForms = false;
object forward = true;
object format = false;
object matchKashida = false;
object matchDiacritics = false;
object matchAlefHamza = false;
object matchControl = false;
object read_only = false;
object visible = true;
object replace = 2;
object wrap = 1;
//execute find and replace
fileOpen.Selection.Find.Execute(ref findText, ref matchCase, ref matchWholeWord,
ref matchWildCards, ref matchSoundsLike, ref matchAllWordForms, ref forward, ref wrap, ref format, ref replaceWithText, ref replace,
ref matchKashida, ref matchDiacritics, ref matchAlefHamza, ref matchControl);
}

问题是,在第一个代码块中,您使用的是Verbatim字符串文字。

您正试图将文本"\n"替换为(例如(字符串"\r\n"。但实际上,您希望将换行控制字符(0x0A–通常转义为\n(替换为其他一些控制字符。当您使用逐字字符串文字时,字符将不会被转义。

为了获得预期的结果,请在第一个代码块中删除字符串开头的"at"(@(符号。

->replaceWithText = replaceWithText.ToString().Replace("n", "rn");等。

相关内容

  • 没有找到相关文章