我正在尝试编写一个应用程序来搜索word文档中的所有出现,其中some_text是<之间的任何字符串。和>。当我找到每场比赛时,我想存储/展示/做每件事。
这是我到目前为止所拥有的:
Word._Application word = new Word.Application();
Word.Documents d = word.Documents;
Word._Document doc;
doc = d.Open(strFileName);
doc.Activate();
foreach (Word.Range myStoryRange in doc.StoryRanges)
{
myStoryRange.Find.MatchWildcards = true;
myStoryRange.Find.Text = "[<]*[>]";
myStoryRange.Find.Execute();
// Somehow get the result string that matched the wildcard
}
答案 0 :(得分:3)
事实证明,为每个找到的字符串重新定义了Range。您可以访问每个找到的文本:
rng.Text
您可以在更大的范围内找到找到的文本字符位置:
rng.Start
rng.End
所以我能够通过声明一个只包含Find循环中找到的字符串的本地Range来做到这一点。我用DocProperty替换每个文本,但你可以用它做任何你喜欢的事情:
Word.Range rng = this.Content;
rng.Find.MatchWildcards = true;
rng.Find.Text = "[<]*[>]";
while (rng.Find.Execute())
{
// create a local Range containing only a single found string
object cstart = rng.Start;
object cend = rng.End;
Word.Range localrng = this.Range(ref cstart, ref cend);
// replace the text with a custom DocProperty
Word.Field newfld = localrng.Fields.Add(localrng, Word.WdFieldType.wdFieldDocProperty, "MyDocProp", false);
localrng.Fields.Update();
}