使用Word的序列号的SearchOptions-MS Office Word加载项OfficeJS

时间:2018-08-10 13:49:49

标签: ms-word office-js javascript-api-for-office

现在,我通过使用搜索词来查找Word文档中的词

context.document.body.search(dict, { ignorePunct: true, matchCase: true, matchWholeWord: true });`

但是我想通过单词在Word文档中的顺序位置来查找单词。我找不到确切的nth字。

有可能这样做吗?

2 个答案:

答案 0 :(得分:1)

快速:您可以为此使用range.split()方法。 (即,这适用于searchResult,主体,段落,内容控件等。)假设您要获取段落中的第4个字,这是您的操作方式:

async function run() {
    await Word.run(async (context) => {
        //the method returns an array with the split ranges...
// the first parameter is an array of the delimiters you want to use, in this case the space. you can add more if needed.
        let myWords = context.document.body.paragraphs.getFirst().split([" "], true, true);
        myWords.load();
        await context.sync();
        if (myWords.items.length >= 3)  // just because i want the 4th word :)
            console.log(myWords.items[3].text);

    });
}

,如果您想在脚本实验室中使用它,这里是the gist,则可以导入。

答案 1 :(得分:0)

(现在)Office JS API还没有与Word COM对象Words等效,后者可让您通过索引值在给定范围内指定“单词”。考虑到单词之间用空格隔开的事实,您可以获取文档的整个文本,然后将其拆分为“单词”数组。

await Word.run(async (context) => {
    let ordinalWord = 2;
    let rng = context.document.body;
    rng.load("text");
    await context.sync();
    let sContent = rng.text;
    let words = sContent.split(" ", ordinalWord);
    console.log(words[ordinalWord - 1]);
});

一旦您知道nth这个词是什么,就可以使用已经在代码中搜索/查找范围的代码。

如果单词出现不止一次,那么您可能需要扩展“ split”的使用方式,以获取周围的单词,从而使搜索更加准确。