我尝试了以下代码。如果它是普通文本并且左缩进打开,则它可以工作。如果我有带方括号的文本,它会破坏docx,如果我将文本在页脚中心对齐,则替换不起作用。请帮我。这是我的代码。
using (var file = WordprocessingDocument.Open(targetFileName, true))
{
string content = null;
using (StreamReader reader = new StreamReader(
file.MainDocumentPart.FooterParts.First().GetStream()))
{
content = reader.ReadToEnd();
}
Regex expression = new Regex("[name]");
content = expression.Replace(content,"replacement word");
using (StreamWriter writer = new StreamWriter(
file.MainDocumentPart.FooterParts.First().GetStream(FileMode.Create)))
{
writer.Write(content);
}
file.MainDocumentPart.Document.Save();
}
我想替换页脚中的多个单词,如[name] | [email] | [电话]
当要替换的文本中包含[]时,文档将被损坏。
提前致谢
答案 0 :(得分:0)
上面的代码中发生的事情是,“ n”,“ a”,“ m”,“ e”的每个实例都被整个字符串“ replacement word”替换。 .docx文件中的xml标头包含这些字符,当Regex运行Replace函数时,这些字符将被覆盖并损坏。
可以通过如下转义[]字符来解决此问题:
Regex表达式=新的Regex(“ \\ [name \\]”);