我有一个 MS Word 插件,需要仅根据其格式从一系列文本中提取文本:特别是在我的情况下,如果文本带有下划线或删除线,则字符/单词的范围需要找到带下划线或删除线的内容,以便我可以跟踪它们。
我的第一个想法是使用 Range.Find
,如 outlined here ,但是当我不知道我正在寻找的字符串是什么时,这将不起作用:
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() 调用后,查找功能就会根据需要运行。
最佳答案
你需要
rng.Find.Font.Underline = wdUnderline.wdUnderlineSingle;
(此时您正在设置指定rng的格式,而不是Find的格式)
关于c# - 使用 Word 互操作查找具有特定格式的文本范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27072679/