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", чтобы получить окружающие слова, чтобы поиск был более точным.