关于在C#中使用interop.word的find.replace

时间:2015-02-27 08:36:29

标签: c# .net ms-word office-interop

我有这个代码,它代表两个x'es之间的每个数字

doc.Find.Replacement.Font.Superscript = 1;
doc.Find.Text = "x([0-9]{1,5})x";
doc.Find.Replacement.Text = @"\1";
doc.Find.MatchWildcards = true;

doc.Find.Execute(Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Word.WdReplace.wdReplaceAll, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

我希望有一个类似的功能,可以在两个x'es之间标注所有字符,并认为这可能会有效:

doc.Find.Replacement.Font.Superscript = 1;
doc.Find.Text = "x([a-z]{1,5})x";   <-------- characters instead of numbers
doc.Find.Replacement.Text = @"\1";
doc.Find.MatchWildcards = true;

...

但它不起作用。此外,我不确定以下行是做什么的。

doc.Find.Replacement.Text = @"\1";

1 个答案:

答案 0 :(得分:1)

尝试

doc.Find.Text = "x([a-wy-z]{1,5})x";   <-------- characters instead of numbers

因为你想让“x”“结束”匹配,所以它不能成为匹配的一部分: - )

doc.Find.Replacement.Text = @"\1";

表示必须将(...)之间的文字替换为(...)之间的文字(因此只删除了x-es)。显然,格式化是在替换的文本上完成的。 \1表示与第一个(...)匹配的文字。如果您有多个(...)(...),则会将其编号为\1\2,...