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

时间:2017-11-13 23:26:41

标签: javascript ms-word full-text-search office-js office-addins

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

目前,代码会在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正则表达式\(string1|string2/),但这在Word上下文中似乎无效。

1 个答案:

答案 0 :(得分:1)

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

以下是工作代码:

describe Api::V1::UsersController, type: :api