Поиск текста с помощью параметров поиска в надстройке Word
Надстройки часто должны действовать на основе текста документа. Метод поиска предоставляется каждым элементом управления содержимым (включая Body, Paragraph, Range, Table, TableRow и базовый объект ContentControl ). Этот метод принимает строку (или выражение с подстановочными знаками), представляющую искомый текст и объект SearchOptions . Она возвращает коллекцию диапазонов, соответствующих искомому тексту.
Важно!
Клиент Word может ограничить доступные параметры поиска. Дополнительные сведения о текущей поддержке см. в разделе Поиск и замена текста.
Параметры поиска
Параметры поиска представляют собой коллекцию логических значений, определяющих способ обработки параметра поиска.
Свойство | Описание |
---|---|
ignorePunct | Возвращает или задает значение, которое указывает, следует ли пропустить все знаки препинания между словами. Соответствует флажку "Игнорировать знаки препинания" в диалоговом окне Поиск и замена . |
ignoreSpace | Возвращает или задает значение, которое указывает, следует ли пропустить все пробелы между словами. Соответствует флажку "Игнорировать пробелы" в диалоговом окне Поиск и замена . |
matchCase | Возвращает или задает значение, указывающее, следует ли выполнять поиск с учетом регистра. Соответствует флажку "Сопоставить регистр" в диалоговом окне Поиск и замена . |
matchPrefix | Возвращает или задает значение, которое указывает, нужно ли учитывать слова, начинающиеся со строки поиска. Соответствует флажку "Сопоставить префикс" в диалоговом окне Поиск и замена . |
matchSuffix | Возвращает или задает значение, которое указывает, нужно ли учитывать слова, заканчивающиеся строкой поиска. Соответствует флажку "Соответствовать суффиксу" в диалоговом окне Поиск и замена . |
matchWholeWord | Возвращает или задает значение, которое указывает, следует ли операции искать только целые слова, а не текст, являющийся частью большего слова. Соответствует флажку "Найти только целые слова" в диалоговом окне Поиск и замена . |
matchWildcards | Возвращает или задает значение, которое указывает, будет ли выполняться поиск с использованием специальных операторов поиска. Соответствует флажку "Использовать подстановочные знаки" в диалоговом окне Поиск и замена . |
Поиск для специальных символов
В следующей таблице перечислены нотации поиска для определенных специальных символов.
Найти | Нотации |
---|---|
Знак абзаца | ^P |
Табуляции | ^T |
Любой символ | ^? |
Любая цифра | ^# |
Любая буква | ^$ |
Символ курсора | ^^ |
Символ раздела | ^% |
Символ абзаца | ^V |
Разрыв столбца | ^N |
Эм дефис | ^+ |
En dash | ^= |
Знак концевого сноска | ^E |
Поле | ^D |
Метка сноски | ^F |
Рисунок | ^Г |
Разрыв строки вручную | ^L |
Разрыв страницы вручную | ^М |
Неразрывный дефис | ^~ |
Неразрывное пространство | ^s |
Дополнительный дефис | ^- |
Разрыв раздела | ^B |
Пробелы | ^Ж |
Руководство по подстановочным знакам
В таблице ниже приведено руководство по подстановочным знакам поиска в API JavaScript для Word.
Найти | Подстановочный знак | Пример |
---|---|---|
Любой знак | ? | "л?с" находит "лес" и "лис". |
Любая строка знаков | * | "к*т" находит "кот" и "компот". |
Начало слова | < | <(inter) находит интересное и перехватывать, но не расколоть. |
Конец слова | > | (в)> находит в и внутри, но не интересно. |
Один из указанных знаков | [ ] | "п[оы]л" находит "пол" и "пыл". |
Любой символ из этого диапазона | [-] | [r-t]ight находит право, прицел и туго. Диапазон должен быть указан в алфавитном порядке. |
Любой символ, кроме символов из диапазона, указанного в скобках | [!э-я] | "ко[!а-п]а" находит "кора" и "коса", но не "коза" или "кожа". |
Ровно n вхождений предыдущего символа или выражения | {n} | "жарен{2}ый" находит "жаренный", но не "жареный". |
По крайней мере n вхождений предыдущего символа или выражения | {n,} | "жарен{1,}ый" находит и "жареный" и "жаренный". |
От n до m вхождения предыдущего символа или выражения | {n,m} | 10{1,3} находит 10, 100 и 1000. |
Одно или несколько повторений предыдущего знака или выражения | @ | "жарен@ый" находит "жареный" и "жаренный". |
Экранирование специальных символов
Поиск с подстановочными знаками по сути совпадает с поиском по регулярному выражению. В регулярных выражениях есть специальные символы, включая "[", "]", "(", ")", "{", "}", "*", "?", "<", "", ">!" и "@". Если один из этих символов является частью строки литерала, которую ищет код, его необходимо экранировать, чтобы Word знал, что он должен обрабатываться буквально, а не как часть логики регулярного выражения. Чтобы экранировать символ в Word поиске в пользовательском интерфейсе, перед ним должен быть символ обратной косой черты ('\'), но чтобы экранировать его программным способом, поместите его между символами "[]". Например, "[*]*" ищет любую строку, начинающуюся с "*", за которой следует любое количество других символов.
Примеры
В приведенных ниже примерах показаны распространенные сценарии.
Поиск без учета знаков препинания
// Run a batch operation against the Word object model.
await Word.run(async (context) => {
// Queue a command to search the document and ignore punctuation.
const searchResults = context.document.body.search('video you', {ignorePunct: true});
// Queue a command to load the font property values.
searchResults.load('font');
// Synchronize the document state.
await context.sync();
console.log('Found count: ' + searchResults.items.length);
// Queue a set of commands to change the font for each found item.
for (let 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.
await context.sync();
});
Поиск на основе префикса
// Run a batch operation against the Word object model.
await Word.run(async (context) => {
// Queue a command to search the document based on a prefix.
const searchResults = context.document.body.search('vid', {matchPrefix: true});
// Queue a command to load the font property values.
searchResults.load('font');
// Synchronize the document state.
await context.sync();
console.log('Found count: ' + searchResults.items.length);
// Queue a set of commands to change the font for each found item.
for (let 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.
await context.sync();
});
Поиск на основе суффикса
// Run a batch operation against the Word object model.
await Word.run(async (context) => {
// Queue a command to search the document for any string of characters after 'ly'.
const searchResults = context.document.body.search('ly', {matchSuffix: true});
// Queue a command to load the font property values.
searchResults.load('font');
// Synchronize the document state.
await context.sync();
console.log('Found count: ' + searchResults.items.length);
// Queue a set of commands to change the font for each found item.
for (let i = 0; i < searchResults.items.length; i++) {
searchResults.items[i].font.color = 'orange';
searchResults.items[i].font.highlightColor = 'black';
searchResults.items[i].font.bold = true;
}
// Synchronize the document state.
await context.sync();
});
Поиск с использованием подстановочных знаков
// Run a batch operation against the Word object model.
await Word.run(async (context) => {
// Queue a command to search the document with a wildcard
// for any string of characters that starts with 'to' and ends with 'n'.
const searchResults = context.document.body.search('to*n', {matchWildcards: true});
// Queue a command to load the font property values.
searchResults.load('font');
// Synchronize the document state.
await context.sync();
console.log('Found count: ' + searchResults.items.length);
// Queue a set of commands to change the font for each found item.
for (let i = 0; i < searchResults.items.length; i++) {
searchResults.items[i].font.color = 'purple';
searchResults.items[i].font.highlightColor = 'pink';
searchResults.items[i].font.bold = true;
}
// Synchronize the document state.
await context.sync();
});
Поиск специального символа
// Run a batch operation against the Word object model.
await Word.run(async (context) => {
// Queue a command to search the document for tabs.
const searchResults = context.document.body.search('^t');
// Queue a command to load the font property values.
searchResults.load('font');
// Synchronize the document state.
await context.sync();
console.log('Found count: ' + searchResults.items.length);
// Queue a set of commands to change the font for each found item.
for (let i = 0; i < searchResults.items.length; i++) {
searchResults.items[i].font.color = 'purple';
searchResults.items[i].font.highlightColor = 'pink';
searchResults.items[i].font.bold = true;
}
// Synchronize the document state.
await context.sync();
});
Поиск использование подстановочного знака для экранированного специального символа
Как отмечалось ранее в разделе Экранирование специальных символов, в регулярных выражениях используются специальные символы. Чтобы поиск с подстановочными знаками нашел один из этих специальных символов программным способом, его необходимо экранировать с помощью "[" и "]". В этом примере показано, как найти специальный символ "{" с помощью поиска с подстановочными знаками.
// Run a batch operation against the Word object model.
await Word.run(async (context) => {
// Queue a command to search the document with a wildcard for an escaped opening curly brace.
const searchResults = context.document.body.search('[{]', { matchWildcards: true });
// Queue a command to load the font property values.
searchResults.load('font');
// Synchronize the document state.
await context.sync();
console.log('Found count: ' + searchResults.items.length);
// Queue a set of commands to change the font for each found item.
for (let i = 0; i < searchResults.items.length; i++) {
searchResults.items[i].font.color = 'purple';
searchResults.items[i].font.highlightColor = 'pink';
searchResults.items[i].font.bold = true;
}
// Synchronize the document state.
await context.sync();
});
Примеры кода в Script Lab
Получите надстройку Script Lab и опробуйте примеры кода, приведенные в этой статье. Дополнительные сведения о Script Lab см. в статье Изучение API JavaScript для Office с помощью Script Lab.
См. также
Дополнительные сведения см. в следующих статьях:
- Справочник по API JavaScript Word
- Связанные примеры кода Word, доступные в Script Lab:
- Поиск и замена текста в Word
Office Add-ins