我正在使用.Net库进行Microsoft Word 2010 interoping
Word.Document doc = wb.Documents[1];
Word.Range range = doc.Range();
range.Find.Forward = true;
range.Find.Execute("HELLO");
MessageBox.Show("Start " + range.Start.ToString());
MessageBox.Show("End " + range.End.ToString());
//make sure it won't even look back
range.Start = range.End;
range.Find.Execute("HELLO");
MessageBox.Show("Start " + range.Start.ToString());
MessageBox.Show("End " + range.End.ToString());
如果文档中有多个“HELLO”,则返回的范围只是忽略它,它会一直找到相同的字符串,我会一直得到相同的范围.Start和range.End值一遍又一遍。我在这里失踪了什么?
答案 0 :(得分:0)
我隔离了问题,只有在word文档中有特殊字符时才会出现,特别是如果文本包含在自定义表格中。在普通的普通文件上,它可以正常工作。
我最终对范围进行了采样。每次搜索后的启动值,如果它与前一个相同,我将它的起始范围增加+ 1,然后重新搜索。
这是一次又一次地完成,虽然它增加了一些搜索,但它非常稳定。
while (range.text.Contains("HELLO"))
{
range.Find.Execute("HELLO");
while ((range.Start < intLastFoundRangeStartValue) && (range.Find.Found))
{
range.Start += intAddToRangeStartValue;
intAddToRangeStartValue++;
range.Find.Execute("HELLO");
}
}
...
此外,作为副产品,它使我无需在循环中添加计数器。