我有一个 MS Word 插件,需要仅根据其格式从一系列文本中提取文本:特别是在我的情况下,如果文本带有下划线或删除线,则带有下划线或删除线的字符/单词的范围通过需要找到,以便我可以跟踪它们。
我的第一个想法是使用Range.Find
, as is 此处概述 http://msdn.microsoft.com/en-us/library/e7d13z59.aspx,但是当我不知道我正在寻找的字符串是什么时,这将不起作用:
var rng = doc.Range(someStartRange, someEndRange);
rng.Find.Forward = true;
rng.Find.Format = true;
// I removed this line in favor of putting it inside Execute()
//rng.Find.Text = "";
rng.Find.Font.Underline = WdUnderline.wdUnderlineSingle;
// this works
rng.Find.Execute("");
int foundNumber = 0;
while (rng.Find.Found)
{
foundNumber++;
// this needed to be added as well, as per the link above
rng.Find.Execute("");
}
MessageBox.Show("Underlined strings found: " + foundNumber.ToString());
我很乐意自己解析文本,但不确定如何在仍然了解格式的情况下执行此操作。预先感谢您的任何想法。
EDIT:
我更改了代码来修复查找下划线问题,并且通过该更改, while 循环永远不会终止。进一步来说,rng.Find.Found
找到带下划线的文本,但它一遍又一遍地找到相同的文本,并且永远不会终止。
EDIT 2:一旦我添加了额外的Execute()
在 while 循环内调用,查找按需要运行。
You need
rng.Find.Font.Underline = wdUnderline.wdUnderlineSingle;
(目前您正在设置指定 rng 的格式,而不是 Find 的格式)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)