Searchoptions с использованием порядкового номера word - надстройка ms office word officejs

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

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

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

Возможно ли это?

Ваш вопрос не совсем ясен ... Вы хотите сказать, например, что вам нужен четвертый экземпляр поискового запроса?

Cindy Meister 10.08.2018 16:27

Пример «У меня есть слово в моем документе», здесь слово 2nd - «иметь», поэтому, используя этот 2, мне нужно найти слово, а затем поработать над словом, например, выделить, выделить и т. д. @CindyMeister

Sridhar Paiya 10.08.2018 16:32

На ваш вопрос ответили?

Cindy Meister 26.08.2018 13:55

Я что-то в центре, мне нужно проверить @CindyMeister

Sridhar Paiya 28.08.2018 11:33
0
4
66
2

Ответы 2

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

Если слово может встречаться более одного раза, вам может потребоваться расширить способ использования «разбиения», чтобы получить окружающие слова, чтобы поиск был более точным.

у нас есть своего рода range.word Синди, проверьте мой ответ ниже.

Juan Balmori 10.08.2018 19:46

@JuanBalmori А, мне потребовалось время, чтобы увидеть разницу - ее можно использовать в диапазоне, а не только в тексте. Это полезно :-)

Cindy Meister 10.08.2018 20:19

Speedy: для этого можно использовать метод 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);

    });
}

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

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