Javascript надстройки Microsoft Office: поиск по matchPrefix: true - как получить полное слово для соответствующего префикса - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь следовать статье здесь

Кроме того, добавьте сюда код, поскольку ссылки всегда могут перемещаться, модифицироваться или падать.

    // Run a batch operation against the Word object model.
    Word.run(function (context) {

    // Queue a command to search the document based on a prefix.
    var searchResults = context.document.body.search('pattern', {matchPrefix: true});

    // Queue a command to load the search results and get the font property values.
    context.load(searchResults, 'font');

    // Synchronize the document state by executing the queued commands, 
    // and return a promise to indicate task completion.
    return context.sync().then(function () {
        console.log('Found count: ' + searchResults.items.length);

        // Queue a set of commands to change the font for each found item.
        for (var i = 0; i < searchResults.items.length; i++) {
            searchResults.items[i].font.color = 'purple';
            searchResults.items[i].font.highlightColor = '#FFFF00'; //Yellow
            searchResults.items[i].font.bold = true;
        }

        // Synchronize the document state by executing the queued commands, 
        // and return a promise to indicate task completion.
        return context.sync();
    });  
})
.catch(function (error) {
    console.log('Error: ' + JSON.stringify(error));
    if (error instanceof OfficeExtension.Error) {
        console.log('Debug info: ' + JSON.stringify(error.debugInfo));
    }
});

Работает нормально, но я не получаю полного слова обратно. Таким образом, если слово patternABCDEFGH, соответствующее слово в searchResults выполняется с помощью

var text = searchResults.items[i].text;
console.log('Matching text:' + text);

Все, что я получаю, это pattern, как мне вернуть полное слово?

1 Ответ

0 голосов
/ 04 сентября 2018

Опция MatchPrefix не ищет каждое слово, которое начинается с этой комбинации букв, - оно ищет только ту комбинацию букв, которая находится в начале слова. Так что в этом случае он найдет только символы «pattern», а не весь «patternMatching» или «patternABCDEFGH».

Как уже упоминал Хуан, для того, чтобы получить целые слова, начинающиеся с определенной комбинации букв, вам понадобится вариант регулярного выражения Word: поиск по шаблону.

Шаблон подстановки будет выглядеть так: [P, p] attern *>

Предполагается, что вы хотите прописные и строчные буквы "p", за которыми следует любой символ до конца слова.

    var searchResults = context.document.body.search('[P,p]attern*>', {matchWildcards: true});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...