В этой статье я покажу, как программно находить и заменять текст в документах Word (DOC/DOCX) с помощью Java. Пошаговое руководство и примеры кода охватывают различные сценарии поиска и замены текста в документах Word.
MS Word предоставляет простой способ поиска и замены текста в документах. Одним из популярных вариантов использования поиска и замены текста может быть удаление или замена конфиденциальной информации в документах до того, как они будут переданы различным объектам. Однако ручной процесс может потребовать от вас установки MS Word и обновления каждого документа отдельно. В таких ситуациях это было бы удобно и экономило время, особенно если вы интегрировали функции поиска и замены в свое настольное или веб-приложение. Итак, давайте начнем и посмотрим, как найти и заменить текст в документах Word с помощью Java в различных сценариях.
- Найти и заменить текст в Word DOC/DOCX с помощью Java
- Замена похожих слов на основе шаблона регулярных выражений в Word DOC/DOCX
- Найти и заменить текст в верхнем/нижнем колонтитуле документа Word
- Поиск и замена текста метасимволами в Word DOC/DOCX
Java API для поиска и замены текста в документах Word
Чтобы реализовать функцию поиска и замены, мы будем использовать Aspose.Words for Java, который является мощным, многофункциональным и простым в использовании API-интерфейсом обработки текста для платформы Java. Вы можете либо скачать его JAR-файл, либо установить его в своем приложении на основе Maven, используя следующие конфигурации.
Репозиторий:
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
Зависимость:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-words</artifactId>
<version>20.5</version>
<classifier>jdk17</classifier>
</dependency>
Поиск и замена текста в документах Word (DOC/DOCX) с использованием Java
Давайте начнем с простого сценария поиска и замены, в котором мы найдем слово «Грустно» во входном документе Word. Ниже приведены шаги для выполнения этой операции.
- Создайте экземпляр класса Document и передайте ему путь к документу Word.
- Найдите и замените текст с помощью метода Document.getRange.replace(String, String, FindReplaceOptions).
- Сохраните документ методом Document.save(String).
В следующем примере кода показано, как найти и заменить текст в документах Word DOCX с помощью Java.
// Загрузите документ Word DOCX
Document doc = new Document("document.docx");
// Поиск и замена текста в документе
doc.getRange().replace("sad", "[replaced]", new FindReplaceOptions(FindReplaceDirection.FORWARD));
// Сохраните документ Word
doc.save("Find-And-Replace-Text.docx");
Ниже приведен входной документ Word, который мы использовали в этой статье.
Ниже приведен вывод после нахождения и замены слова «sad».
Найдите и замените похожие слова в Word DOC/DOCX с помощью Java
Вы также можете настроить API для поиска и замены текста на основе сходства. Например, слова «грустный», «безумный» и «плохой» следуют аналогичному шаблону, который заканчивается на «реклама». Идентификаторы электронной почты — еще один пример такого текста. В таких случаях вы можете определить шаблон регулярного выражения, чтобы найти и заменить все вхождения текста, имеющие определенный шаблон. Ниже приведены шаги для достижения этого.
- Создайте экземпляр класса Document и передайте ему путь к документу Word.
- Определите шаблон регулярного выражения с помощью метода Pattern.compile() и передайте его методу Document.getRange().replace(шаблон шаблона, замена строки, параметры FindReplaceOptions).
- Сохраните обновленный документ методом Document.save(String).
В следующем примере кода показано, как найти и заменить похожие слова на основе определенного шаблона с помощью Java.
// Загрузите документ Word DOCX
Document doc = new Document("document.docx");
// Найти и заменить похожие слова в документе
FindReplaceOptions options = new FindReplaceOptions();
doc.getRange().replace(Pattern.compile("[B|S|M]ad"), "[replaced]", options);
// Сохраните документ Word
doc.save("Find-And-Replace-Text.docx");
Ниже приведен скриншот документа Word после обновления похожих слов.
Заменить текст в верхнем/нижнем колонтитуле документа Word
Aspose.Words также позволяет находить и заменять текст только в верхнем/нижнем колонтитуле документа Word. Ниже приведены шаги для выполнения этой операции.
- Создайте экземпляр класса Document и передайте ему путь к документу Word.
- Получите HeaderFooterCollection документа, используя метод Document.getFirstSection().getHeadersFooters().
- Получить конкретный верхний/нижний колонтитул в объекте HeaderFooter.
- Используйте метод HeaderFooter.getRange().replace() для поиска и замены текста.
- Сохраните обновленный документ Word.
В следующем примере кода показано, как найти и заменить текст в верхнем и нижнем колонтитулах документа Word с помощью Java.
// Загрузите документ Word DOCX
Document doc = new Document("document.docx");
// Доступ к коллекции нижнего колонтитула
HeaderFooterCollection headersFooters = doc.getFirstSection().getHeadersFooters();
HeaderFooter footer = headersFooters.get(HeaderFooterType.FOOTER_PRIMARY);
// Установить параметры поиска и замены
FindReplaceOptions options = new FindReplaceOptions();
options.setMatchCase(false);
options.setFindWholeWordsOnly(false);
footer.getRange().replace("This is footer of the document.", "Copyright (C) 2020 by Aspose Pty Ltd.", options);
// Сохраните документ Word
doc.save("Find-And-Replace-Text.docx");
На следующем снимке экрана показан обновленный текст в нижнем колонтитуле документа Word.
Поиск и замена текста метасимволами в Word DOCX с использованием Java
Может быть случай, когда вам нужно найти и заменить фразу, которая разбита на несколько строк или абзацев. В таких случаях вам придется позаботиться о разрывах абзацев, разделов или строк. Aspose.Words for Java позволяет легко справляться с такими случаями. Ниже приведены метасимволы, которые вы можете использовать для различных перерывов:
- &p: разрыв абзаца
- &b: разрыв раздела
- &м: разрыв страницы
- &l: разрыв строки
В следующем примере кода показано, как найти и заменить текст разрывом абзаца в документе Word.
// Загрузите документ Word DOCX
Document doc = new Document("document.docx");
// Установить параметры
FindReplaceOptions options = new FindReplaceOptions();
// Отключить соответствие регистра и поиск только целых слов
options.setMatchCase(false);
options.setFindWholeWordsOnly(false);
// Заменить текст разрывом абзаца
doc.getRange().replace("First paragraph ends.&pSecond paragraph starts.", "[replaced]", options);
// Сохраните документ Word
doc.save("Find-And-Replace-Text.docx");
Ниже приведен скриншот выходного документа Word.
Вывод
В этой статье вы увидели, как программно находить и заменять текст в документах Word DOC/DOCX с помощью Java. Различные сценарии поиска и замены текста в файлах MS Word DOCX рассмотрены с помощью примеров кода. Вы можете узнать больше об Aspose.Words для Java из документации.