Usar opções de pesquisa no suplemento Word para encontrar texto

Os suplementos frequentemente precisam agir com base no texto de um documento. Um método de pesquisa é exposto por todos os controles de conteúdo (isso inclui Corpo, Parágrafo, Intervalo, Tabela, TableRow e o objeto ContentControl base). Esse método usa uma cadeia de caracteres (ou expressão curinga) que representa o texto que você está procurando e um objeto SearchOptions . Retorna um conjunto de intervalos que correspondem ao texto de pesquisa.

Importante

O cliente Word pode limitar as opções de pesquisa disponíveis. Para obter mais detalhes sobre o suporte atual, consulte Localizar e substituir texto.

Opções de pesquisa

As opções de pesquisa são uma coleção de valores boolianos que definem como o parâmetro de pesquisa deve ser tratado.

Propriedade Descrição
ignorePunct Obtém ou define um valor que indica se devem ser ignorados todos os caracteres de pontuação entre as palavras. Corresponde à caixa de seleção "Ignorar caracteres de pontuação" na caixa de diálogo Localizar e Substituir .
ignoreSpace Obtém ou define um valor que indica se devem ser ignorados todos os espaços em branco entre as palavras. Corresponde à caixa de seleção "Ignorar caracteres de espaço branco" na caixa de diálogo Localizar e Substituir .
matchCase Obtém ou define um valor que indica se deve executar uma pesquisa sensível a casos. Corresponde à caixa de seleção "Caixa de correspondência" na caixa de diálogo Localizar e Substituir .
matchPrefix Obtém ou define um valor que indica se se deve corresponder palavras que começam com a cadeia de caracteres de pesquisa. Corresponde à caixa de seleção "Match prefix" na caixa de diálogo Localizar e Substituir .
matchSuffix Obtém ou define um valor que indica se se deve corresponder palavras que terminam com a cadeia de caracteres de pesquisa. Corresponde à caixa de seleção "Corresponder sufixo" na caixa de diálogo Localizar e Substituir .
matchWholeWord Obtém ou define um valor que indica se a operação de localização localiza apenas palavras inteiras, e não texto que faz parte de uma palavra maior. Corresponde à caixa de seleção "Localizar somente palavras inteiras" na caixa de diálogo Localizar e Substituir .
matchWildcards Obtém ou define um valor que indica se a pesquisa será realizada com operadores de pesquisa especiais. Corresponde à caixa de seleção "Usar curingas" na caixa de diálogo Localizar e Substituir .

Pesquisa para caracteres especiais

A tabela a seguir lista a notação de pesquisa para determinados caracteres especiais.

Achar Notação
Marca de parágrafo ^P
Marca de guia ^T
Qualquer caractere ^?
Qualquer dígito ^#
Qualquer letra ^$
Caractere Caret ^^
Caractere de seção ^%
Caractere parágrafo ^V
Quebra de coluna ^N
Em traço ^+
En dash ^=
Marca de nota de extremidade ^e
Campo ^D
Marca de nota de rodapé ^F
Gráfico ^G
Quebra de linha manual ^L
Quebra de página manual ^M
Hífen não quebrá-lo ^~
Espaço sem quebra ^s
Hifen opcional ^-
Quebra de seção ^B
Espaço Em Branco ^W

Diretrizes para caracteres curinga

A tabela a seguir fornece orientações em torno de caracteres curinga de pesquisa da API JavaScript do Word.

Achar Curinga Exemplo
Qualquer caractere simples ? c?l localiza "calor" e "caldo".
Qualquer cadeia de caracteres * g*s localiza gostar e gastar.
O início de uma palavra < <(inter) acha interessante e intercepta, mas não fragmentado.
O final de uma palavra > (in)> encontra dentro e dentro, mas não interessante.
Um dos caracteres especificados [ ] t[eo]m localiza tem e tom.
Qualquer caractere único deste intervalo [-] [r-t]ight encontra direita, visão e apertado. Os intervalos devem estar em ordem crescente.
Qualquer caractere único, exceto os caracteres do intervalo entre colchetes [!x-z] t[!a-m]que localiza toque e trunque, mas não localiza taque ou tique.
Exatamente n ocorrências do caractere ou expressão anterior {n} ve{2}m localiza veem, mas não vem.
Pelo menos n ocorrências do caractere ou expressão anterior {n,} ve{1,}m localiza vem e veem.
De ocorrências de n a m do caractere ou expressão anterior {n,m} 10{1,3} localiza 10, 100 e 1000.
Uma ou mais ocorrências do caractere ou expressão anterior @ re@r localiza reter e reverter.

Escapar de caracteres especiais

A pesquisa com caracteres curinga é essencialmente igual à pesquisa em uma expressão regular. Há caracteres especiais em expressões regulares, incluindo '[', ']', '(', ')', '{', '}', '*', '?', '<', '>', '!', e '@'. Se um desses caracteres fizer parte da cadeia de caracteres literal que o código está procurando, ele precisará ser escapado para que o Word saiba que ele deve ser tratado literalmente e não como parte da lógica da expressão regular. Para escapar de um caractere no Word pesquisa de interface do usuário, você o precederia com um caractere backslash ('\'), mas para escapar dele programaticamente, coloque-o entre caracteres '[]'. Por exemplo, '[*]*' pesquisa qualquer cadeia de caracteres que comece com um '*' seguido por vários outros caracteres.

Exemplos

Os exemplos a seguir demonstram cenários comuns.

// 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();
});

Pesquisa com base em um prefixo

// 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();
});

Pesquisa com base em um sufixo

// 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();
});

Pesquisa usando caracteres curinga

// 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();
});

Pesquisa para um caractere especial

// 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();
});

Pesquisa usando um curinga para um caractere especial fugitivo

Conforme observado anteriormente em Caracteres especiais escape, há caracteres especiais usados por expressões regulares. Para que uma pesquisa curinga encontre um desses caracteres especiais de forma programática, ela precisará ser escapada usando '[' e ']'. Este exemplo mostra como encontrar o caractere especial '{' usando uma pesquisa curinga.

// 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();
});

Experimente exemplos de código no Script Lab

Obtenha o suplemento Script Lab e experimente os exemplos de código fornecidos neste artigo. Para saber mais sobre o Script Lab, consulte Explorar a API JavaScript do Office usando o Script Lab.

Confira também

Mais informações podem ser encontradas no seguinte: