В этой статье я покажу, как программно находить и заменять текст в документах Word (DOC/DOCX) с помощью Java. Пошаговое руководство и примеры кода охватывают различные сценарии поиска и замены текста в документах Word.

Поиск и замена текста в документах Word

MS Word предоставляет простой способ поиска и замены текста в документах. Одним из популярных вариантов использования поиска и замены текста может быть удаление или замена конфиденциальной информации в документах до того, как они будут переданы различным объектам. Однако ручной процесс может потребовать от вас установки MS Word и обновления каждого документа отдельно. В таких ситуациях это было бы удобно и экономило время, особенно если вы интегрировали функции поиска и замены в свое настольное или веб-приложение. Итак, давайте начнем и посмотрим, как найти и заменить текст в документах Word с помощью Java в различных сценариях.

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. Ниже приведены шаги для выполнения этой операции.

В следующем примере кода показано, как найти и заменить текст в документах 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, который мы использовали в этой статье.

найти и заменить текст в DOCX с помощью Java

Ниже приведен вывод после нахождения и замены слова «sad».

найти и заменить слово

Найдите и замените похожие слова в Word DOC/DOCX с помощью Java

Вы также можете настроить API для поиска и замены текста на основе сходства. Например, слова «грустный», «безумный» и «плохой» следуют аналогичному шаблону, который заканчивается на «реклама». Идентификаторы электронной почты — еще один пример такого текста. В таких случаях вы можете определить шаблон регулярного выражения, чтобы найти и заменить все вхождения текста, имеющие определенный шаблон. Ниже приведены шаги для достижения этого.

В следующем примере кода показано, как найти и заменить похожие слова на основе определенного шаблона с помощью 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 после обновления похожих слов.

найти и заменить похожие слова с помощью Java

Aspose.Words также позволяет находить и заменять текст только в верхнем/нижнем колонтитуле документа 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 из документации.

Смотрите также