У цій статті я покажу, як програмно знайти та замінити текст у документах 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
Давайте почнемо з розгляду простого сценарію пошуку та заміни, де ми знайдемо слово «Sad» у вхідному документі 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, який ми використовували в цій статті.
Нижче наведено результат пошуку та заміни слова “сумний”.
Знайдіть і замініть схожі слова в 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: розрив розділу
- &m: розрив сторінки
- &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 for Java з документації.