我有一个MS Word加载项,需要仅根据其格式从一系列文本中提取文本:特别是在我的情况下,如果文本加下划线或突破,则字符/单词的范围是需要加下划线或突破,以便我可以跟踪它们。
我的第一个想法是使用Range.Find
,outlined here,但是当我不知道我在寻找什么字符串时,它不会起作用:< / p>
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());
我很乐意自己解析文本,但不知道在知道格式的同时如何做到这一点。提前感谢任何想法。
修改
我更改了代码以修复查找下划线问题,并且通过该更改,while循环永远不会终止。更具体地说,rng.Find.Found
找到带下划线的文本,但它会一遍又一遍地找到相同的文本,并且永远不会终止。
编辑2:
一旦我在while循环中添加了额外的Execute()
调用,find就会根据需要运行。
答案 0 :(得分:2)
你需要
rng.Find.Font.Underline = wdUnderline.wdUnderlineSingle;
(目前您正在为指定的rng设置格式,而不是查找的格式)