Usar opciones de búsqueda en el complemento de Word para buscar texto

A menudo, los complementos deben actuar según el texto de un documento. Cada control de contenido expone un método de búsqueda ( incluidos Body, Paragraph, Range, Table, TableRow y el objeto ContentControl base). Este método toma una cadena (o expresión comodín) que representa el texto que está buscando y un objeto SearchOptions . Devuelve un conjunto de intervalos que coincide con el texto de búsqueda.

Opciones de búsqueda

Las opciones de búsqueda son un conjunto de valores booleanos que definen cómo se debe tratar el parámetro de búsqueda.

Propiedad Descripción
ignorePunct Obtiene o establece un valor que indica si quiere omitir todos los caracteres de puntuación entre palabras. Corresponde a la casilla "Omitir caracteres de puntuación" del cuadro de diálogo Buscar y reemplazar .
ignoreSpace Obtiene o establece un valor que indica si se deben omitir todos los espacios en blanco que haya entre palabras. Corresponde a la casilla "Omitir caracteres de espacio en blanco" del cuadro de diálogo Buscar y reemplazar .
matchCase Obtiene o establece un valor que indica si se debe realizar una búsqueda que distingue mayúsculas de minúsculas. Corresponde a la casilla "Caso de coincidencia" del cuadro de diálogo Buscar y reemplazar .
matchPrefix Obtiene o establece un valor que indica si se van a buscar palabras que empiecen por la cadena de búsqueda. Corresponde a la casilla "Prefijo de coincidencia" del cuadro de diálogo Buscar y reemplazar .
matchSuffix Obtiene o establece un valor que indica si se van a buscar palabras que finalicen por la cadena de búsqueda. Corresponde a la casilla "Sufijo de coincidencia" del cuadro de diálogo Buscar y reemplazar .
matchWholeWord Obtiene o establece un valor que indica si la operación debe buscar solo palabras completas y no texto que forme parte de una palabra más larga. Corresponde a la casilla "Buscar solo palabras completas" en el cuadro de diálogo Buscar y reemplazar .
matchWildcards Obtiene o establece un valor que indica si la búsqueda se realizará usando operadores de búsqueda especiales. Corresponde a la casilla "Usar caracteres comodín" del cuadro de diálogo Buscar y reemplazar .

Guía de caracteres comodín

La tabla siguiente proporciona una guía sobre los caracteres comodín de búsqueda de la API de JavaScript de Word.

Para buscar: Carácter comodín Ejemplo
Cualquier carácter ? s?t busca sat y set.
Cualquier cadena de caracteres * s*d busca sad y started.
Principio de palabra < <(inter) encuentra interesante e interceptado, pero no astillado.
Final de palabra > (in)> encuentra en y dentro, pero no es interesante.
Uno de los caracteres especificados [ ] w[io]n busca win y won.
Cualquier carácter individual en este intervalo [-] [r-t]ight busca right y sight. Los intervalos deben estar en orden ascendente.
Cualquier carácter individual excepto los caracteres que aparecen en el intervalo dentro de los corchetes [!x-z] t[!a-m]ck busca tock y tuck, pero no tack ni tick.
Exactamente n repeticiones del carácter o expresión anterior {n} fe{2}d busca feed pero no fed.
Al menos n repeticiones del carácter o expresión anterior {n,} fe{1,}d busca fed y feed.
De n a m repeticiones del carácter o expresión anterior {n,m} 10{1,3} busca 10, 100 y 1000.
Una o más apariciones del carácter o expresión anteriores @ lo@t busca lot y loot.

Escape de caracteres especiales

La búsqueda con caracteres comodín es realmente lo mismo que la búsqueda en una expresión regular. Hay caracteres especiales en expresiones regulares, como '[', ']', '(', ')', '{', '}', '*', '?', '', '<', '>', '!' y '@'. Si uno de estos caracteres forma parte de la cadena literal que está buscando el código, entonces necesita evitarse, de forma que Word sepa que debe tratarse de manera literal y no como parte de la lógica de la expresión regular. Para escapar un carácter en la búsqueda de la interfaz de usuario de Word, lo precedería con un carácter de barra diagonal inversa ('\'), pero para escaparlo mediante programación, colóquelo entre caracteres '[]'. Por ejemplo, '[*]*' busca cualquier cadena que comience con un '*' seguido de cualquier número de otros caracteres.

Ejemplos

Los ejemplos siguientes muestran los escenarios comunes.

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

Búsqueda basada en un prefijo

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

Búsqueda basada en un sufijo

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

Búsqueda con caracteres comodín

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

Encontrará más información en la API de referencia de JavaScript de Word.