MS Word web插件javascript同时搜索多个字符串



我已经能够在JS Redact中成功运行Github项目Word Add。现在,我需要对代码进行更改。需要帮助。

目前,该代码在Word文档中发现单个字符串多次出现,并突出显示这些字符串。但是,我需要通过单击一个按钮在文档中搜索多个字符串(也可以在js文件中硬编码),并突出显示这些字符串。例如,我想在文档中同时找到字符串'this''that',并高亮显示它们。

搜索单个字符串的当前代码:

Word.run(function (context) {
//search string
var searchInput = "hello";
// Search the document.
var searchResults = context.document.body.search(searchInput, {matchWildCards: true});
// Load the search results and get the font property values.
context.load(searchResults, "");
// Synchronize the document state by executing the queued-up commands, 
// and return a promise to indicate task completion.
return context.sync()
.then(function () {
var count = searchResults.items.length;
// // Queue a set of commands to change the font for each found item.
for (var i = 0; i < count; i++) {
searchResults.items[i].font.highlightColor = '#FFFF00'; //Yellow            
}
return count;
})
.then(context.sync)
.then(reportWordsFound);

到目前为止,我尝试了几种方法,但没有成功:

  1. 在搜索字符串的循环中运行context.document.body.search(searchInput,,并尝试使用+push附加searchResults字符串。这次尝试给出了一个错误,即我不能将多个上下文结果添加到单个对象中。

  2. 我试着在WildCards操作符方面发挥创意,但没有什么适合这样做。许多帖子都在谈论JS regex(string1|string2/),但这在Word上下文中似乎是无效的。

我终于可以通过创建一个父函数来解决这个问题,该函数在循环中调用搜索函数。我的错误是在搜索函数本身内部创建了循环。

这是工作代码:

function searchStrings(){
searchString('hello world');
searchString('Goodbye');
}
RedactAddin.searchStrings = searchStrings;
function searchString(input) {
// Run a batch operation against the Word object model.
Word.run(function (context) {
//...... (same as the original) ...............

相关内容

  • 没有找到相关文章

最新更新