Знайти і замінити
Ви можете легко переміщатися по документу за допомогою клавіатури та миші, але якщо вам потрібно прокрутити багато сторінок, Пошук певного тексту в довгому документі займе досить багато часу. Якщо ви хочете замінити певні символи або слова, які ви використовували в документі, це займе більше часу. Функція “Знайти та замінити” дозволяє знайти послідовність символів у документі та замінити її іншою послідовністю символів.
Aspose.Words дозволяє знайти в документі певний рядок або шаблон регулярного виразу і замінити його альтернативним варіантом без установки і використання додаткових додатків, таких як Microsoft Word. Це пришвидшить виконання багатьох завдань набору тексту та форматування, що потенційно заощадить вам години роботи.
У цій статті пояснюється, як застосовувати заміну рядків та регулярні вирази з підтримкою метасимволів.
Способи пошуку і заміни
Aspose.Words надає два способи застосувати операцію пошуку та заміни, використовуючи наступне:
- Simple string replacement – щоб знайти та замінити певний рядок на інший, вам потрібно вказати рядок пошуку (буквено-цифрові символи), який буде замінено відповідно до всіх появ іншим зазначеним рядком заміни. Обидва рядки не повинні містити символів. Візьміть до уваги, що порівняння рядків може бути чутливим до регістру, або ви можете бути не впевнені в правильності написання, або у вас може бути кілька подібних варіантів написання.
- Regular expressions – щоб задати регулярний вираз для пошуку точних збігів рядків і заміни їх відповідно до вашим регулярним виразом. Зверніть увагу, що слово визначається як таке, що складається лише з буквено-цифрових символів. Якщо при заміні збігаються тільки цілі слова, а вхідний рядок містить Символи, то фрази знайдені не будуть.
Крім того, ви можете використовувати спеціальні метасимволи з простою заміною рядків і регулярні вирази для вказівки розривів в рамках операції пошуку і заміни.
Aspose.Words представляє функціональність пошуку та заміни в просторі імен Aspose.Words.Replacing. У процесі пошуку та заміни ви можете працювати з багатьма параметрами, використовуючи клас FindReplaceOptions.
Знайдіть і замініть текст за допомогою простої заміни рядка
Ви можете використовувати один із методів Replace, щоб знайти або замінити певний рядок і повернути кількість виконаних замін. У цьому випадку ви можете вказати рядок, який потрібно замінити, рядок, який замінить усі його випадки, чи буде Заміна чутливою до регістру та чи будуть порушені лише окремі слова.
Наступний приклад коду показує, як знайти рядок “CustomerName " і замінити його рядком “James Bond”:
Ви можете помітити різницю між документами, перш ніж застосовувати просту заміну рядків:
І після застосування простої заміни рядка:
Пошук і заміна тексту за допомогою регулярних виразів
Регулярний вираз (regex) - це шаблон, який описує певну послідовність тексту. Припустимо, ви хочете замінити всі подвійні входження слова одним входженням слова. Потім ви можете застосувати наступний регулярний вираз, щоб вказати шаблон із двох слів: ([a-zA-Z]+) \1
.
Використовуйте інший метод Replace для пошуку та заміни певних комбінацій символів, встановивши параметр Regex
Як шаблон регулярного виразу для пошуку збігів.
Наступний приклад коду показує, як замінити рядки, що відповідають шаблону регулярного виразу, вказаному рядком заміни:
Ви можете помітити різницю між документами, перш ніж застосовувати заміну рядків регулярними виразами:
І після застосування заміни рядків регулярними виразами:
Знайдіть і замініть рядок за допомогою метасимволів
Ви можете використовувати метасимволи в рядку пошуку або в рядку заміни, якщо певний текст або фраза складається з декількох абзаців, розділів або сторінок. Деякі з метасимволів включають &p для позначення розриву абзацу, &b для позначення розриву розділу, &m для позначення розриву сторінки та &l для позначення розриву рядка.
Наступний приклад коду показує, як замінити текст абзацом та розривом сторінки:
Знайти та замінити рядок у верхньому / нижньому колонтитулі документа
Ви можете знайти та замінити текст у верхньому/нижньому колонтитулі документа Word за допомогою класу HeaderFooter.
Наступний зразок коду показує, як замінити текст розділу заголовка у вашому документі:
Ви можете помітити різницю між документами до застосування заміни рядка заголовка:
І після застосування заміни рядка заголовка:
Приклад коду для заміни тексту нижнього колонтитула у вашому документі дуже схожий на попередній приклад коду верхнього колонтитула. Все, що вам потрібно зробити, це замінити наступні два рядки:
auto header = headersFooters->idx_get(HeaderFooterType::HeaderPrimary);
header->get_Range()->Replace(u"Aspose.Words", u"Remove", options);
З наступним:
auto footer = headersFooters->idx_get(HeaderFooterType::FooterPrimary);
footer->get_Range()->Replace(u"(C) 2006 Aspose Pty Ltd.", u"Copyright (C) Aspose Pty Ltd.", options);
Ви можете помітити різницю між документами, перш ніж застосувати заміну рядка нижнього колонтитула:
І після застосування заміни рядка нижнього колонтитула:
Ігнорувати текст під час пошуку та заміни
Застосовуючи операцію пошуку та заміни, ви можете ігнорувати певні фрагменти тексту. Таким чином, певні частини тексту можуть бути виключені з пошуку, а пошук та заміна можуть бути застосовані лише до решти частин.
Aspose.Words надає багато властивостей пошуку та заміни для ігнорування тексту, таких як IgnoreDeleted, IgnoreFieldCodes, IgnoreFields, IgnoreFootnotes, і IgnoreInserted.
Наступний приклад коду показує, як ігнорувати текст всередині змін видалення:
Налаштування операції пошуку та заміни
Aspose.Words надає безліч різних properties способів пошуку та заміни тексту, таких як застосування певного формату з властивостями ApplyFont та ApplyParagraphFormats, використання підстановок у шаблонах заміни з властивістю UseSubstitutions та інші.
Наступний приклад коду показує, як виділити певне слово у вашому документі:
Aspose.Words дозволяє використовувати інтерфейс IReplacingCallback для створення та виклику користувацького методу під час операції заміни. У вас можуть бути деякі випадки використання, коли Вам потрібно налаштувати операцію пошуку та заміни, наприклад, замінити текст, вказаний у регулярному виразі, тегами HTML, тому в основному ви будете застосовувати заміну за допомогою вставки HTML.
Якщо вам потрібно замінити рядок тегом HTML, застосуйте інтерфейс IReplacingCallback, щоб налаштувати операцію пошуку та заміни таким чином, щоб зіставлення починалося на початку виконання з вузла зіставлення вашого документа. Наведемо кілька прикладів використання IReplacingCallback.
Наступний приклад коду показує, як замінити текст, вказаний на HTML:
У наступному прикладі коду показано, як виділити позитивні числа зеленим кольором, а негативні-червоним:
Наступний приклад коду показує, як додати номер рядка перед кожним рядком: