найти и заменить текст в Word C++

Найти и заменить — это полезная функция, предоставляемая MS Word, которая позволяет обновлять все вхождения определенного текста одновременно. Таким образом, вам не нужно вручную находить и заменять текст во всем документе. В этой статье вы узнаете, как находить и заменять текст в документах Word из приложений C++. Это может быть полезно, когда вам нужно заменить определенный текст в нескольких документах за один раз.

C++ API для поиска и замены текста

Aspose.Words for C++ — это библиотека C++ для создания новых и управления существующими документами Word. API поддерживает широкий спектр базовых и расширенных функций автоматизации Word. Вы можете скачать пакет API или установить его с помощью NuGet.

Install-Package Aspose.Words.Cpp

Поиск и замена текста в документах Word с помощью C++

Ниже приведены шаги по поиску и замене текста в документах Word с помощью Aspose.Words for C++.

  • Загрузите документ Word, используя класс Document.
  • Замените нужное слово, используя Document->getRange()->Replace(u"sad", u"bad", System::MakeObject ) метод.
  • Сохраните обновленный документ Word методом Документ->Сохранить(Строка).

В следующем примере кода показано, как найти и заменить слово «грустный» на «плохой» в документе Word с помощью C++.

// Загрузить документ MS Word
System::SharedPtr<Document> doc = System::MakeObject<Document>(u"Document.doc");

// Найдите и замените текст
doc->get_Range()->Replace(u"sad", u"bad", System::MakeObject<FindReplaceOptions>(FindReplaceDirection::Forward));

// Сохраните обновленный документ 
doc->Save(u"updated.doc");

Поиск и замена текста с помощью регулярных выражений

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

  • Загрузите документ Word, используя класс Document.
  • Используйте класс Regex для определения регулярного выражения.
  • Замените нужное слово, используя Document->getRange()->Replace(System::MakeObjectSystem::Text::RegularExpressions::Regex , u"плохой", варианты) метод.
  • Сохраните обновленный документ Word методом Документ->Сохранить(Строка).

В следующем примере кода показано, как найти и заменить текст с помощью регулярного выражения в C++.

// Загрузить документ MS Word
System::SharedPtr<Document> doc = System::MakeObject<Document>(u"Document.doc");

// Создание параметров поиска и замены
System::SharedPtr<FindReplaceOptions> options = System::MakeObject<FindReplaceOptions>();

// Найдите и замените текст
doc->get_Range()->Replace(System::MakeObject<System::Text::RegularExpressions::Regex>(u"[s|m]ad"), u"bad", options);

// Сохраните обновленный документ 
doc->Save(u"updated.doc");

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

В некоторых случаях текст, который вы хотите заменить, может включать в себя разрывы, т.е. разрыв строки, разрыв абзаца, разрыв раздела и т. д. Чтобы иметь дело с такими сценариями, Aspose.Words для C++ поддерживает следующие метасимволы в строках поиска и замены. .

  • &p для разрыва абзаца
  • &b для разрыва раздела
  • &m для разрыва страницы
  • &l для ручного разрыва строки

В следующем примере кода показано, как найти и заменить текст с помощью метасимволов в документе Word.

// Загрузить документ MS Word
System::SharedPtr<Document> doc = System::MakeObject<Document>(u"Document.doc");

// Создание параметров поиска и замены
System::SharedPtr<FindReplaceOptions> options = System::MakeObject<FindReplaceOptions>();

// Найдите и замените текст
doc->get_Range()->Replace(u"This is Line 1&pThis is Line 2", u"This is replaced line", options);
doc->get_Range()->Replace(u"This is Line 1&mThis is Line 2", u"Page break is replaced with new text.", options);

// Сохраните обновленный документ 
doc->Save(u"updated.doc");

Игнорировать текст во время операции поиска и замены

Aspose.Words для C++ также позволяет игнорировать текст в полях и исправления во время операции поиска и замены. Класс FindReplaceOptions позволяет указать параметры для добавления этой настройки. Класс FindReplaceOptions предоставляет следующие методы для игнорирования текста в различных сценариях:

В следующем примере кода показано, как игнорировать текст в каждом из вышеупомянутых сценариев.

// Загрузить документ MS Word
System::SharedPtr<Document> doc = System::MakeObject<Document>(u"Document.doc");

// Создание параметров поиска и замены
System::SharedPtr<FindReplaceOptions> options = System::MakeObject<FindReplaceOptions>();

// Заменить «e» в документе, игнорируя текст внутри поля
options->set_IgnoreFields(true);
doc->get_Range()->Replace(System::MakeObject<Regex>(u"e"), u"*", options);

// Заменить «e» в документе, игнорируя удаленный текст
options->set_IgnoreDeleted(true);
doc->get_Range()->Replace(System::MakeObject<Regex>(u"e"), u"*", options);

// Заменить «e» в документе, игнорируя вставленный текст
options->set_IgnoreInserted(true);
doc->get_Range()->Replace(System::MakeObject<Regex>(u"e"), u"*", options);

// Сохраните обновленный документ 
doc->Save(u"updated.doc");

Получить бесплатную лицензию

Вы можете получить бесплатную временную лицензию, чтобы попробовать API без ограничений пробной версии.

Вывод

В этой статье вы увидели, как найти и заменить текст в документах Word с помощью C++. В пошаговом руководстве и примерах кода показано, как настроить функцию поиска и замены в различных сценариях. Вы можете узнать больше об API автоматизации C++ Word, используя документацию.

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