SearchOptions с использованием порядкового номера Word - MS Office Word Addin OfficeJS

Прямо сейчас я нахожу слова в документе Word, ища термин, используя

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

Но я хочу найти слово по порядковому положению в документе Word. Я не могу найти точное nth слово.

Возможно ли это сделать?

2 ответа

Speedy: для этого вы можете использовать метод range.split(). (т.е. это относится к searchResult, body, абзацу, управлению контентом и т. д.) Предполагая, что вы хотите получить 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);

    });
}

и если вы хотите поиграть с ним в Script lab, вот суть, который вы можете импортировать.

API-интерфейсы Office JS (пока) не имеют эквивалента объекту 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", чтобы получить окружающие слова, чтобы поиск был более точным.

Другие вопросы по тегам