WordC++でテキストを検索して置換する

検索と置換は、MS Wordが提供する便利な機能で、特定のテキストのすべての出現箇所を一度に更新できます。したがって、ドキュメント全体のテキストを手動で見つけて置き換える必要はありません。この記事では、C++アプリケーション内からWord文書内のテキストを検索して置換する方法を学習します。これは、一度に複数のドキュメントの特定のテキストを置き換える必要がある場合に役立ちます。

テキストを検索して置換するC++API

Aspose.Words for C++は、新しいWord文書を作成して既存のWord文書を操作するためのC++ライブラリです。 APIは、幅広い基本的なWord自動化機能と高度なWord自動化機能をサポートしています。 APIパッケージをダウンロードするか、NuGetを使用してインストールできます。

Install-Package Aspose.Words.Cpp

C++を使用してWord文書内のテキストを検索して置換する

以下は、Aspose.Words for C++を使用してWord文書内のテキストを検索および置換する手順です。

  • Documentクラスを使用してWordドキュメントをロードします。
  • Document->get_Range()->Replace(u"sad", u"bad", System::MakeObject)メソッドを使用して、目的の単語を置き換えます。
  • Document->Save(String)メソッドを使用して、更新されたWord文書を保存します。

次のコードサンプルは、C++を使用してWord文書で「sad」という単語を「bad」に置き換える方法を示しています。

// MSWord文書をロードする
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");

正規表現を使用してテキストを検索および置換する

特定のパターンに従う単語を見つけて置き換えるために、正規表現を定義することもできます。たとえば、「sad」と「mad」という単語を「bad」という単語に置き換えることができます。以下は、Word文書内の正規表現に一致する単語を見つけて置き換える手順です。

  • Documentクラスを使用してWordドキュメントをロードします。
  • Regexクラスを使用して、正規表現を定義します。
  • Document->get_Range()->Replace(System::MakeObjectSystem::Text::RegularExpressions::Regex, u"bad", options)メソッドを使用して、目的の単語を置き換えます。
  • Document->Save(String)メソッドを使用して、更新されたWord文書を保存します。

次のコードサンプルは、C++で正規表現を使用してテキストを検索および置換する方法を示しています。

// MSWord文書をロードする
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 for C++は、検索文字列と置換文字列で次のメタ文字をサポートします。 。

  • 段落区切りの &p
  • セクションブレークの &b
  • ページ分割の &m
  • 手動改行の場合は &l

次のコードサンプルは、Wordドキュメントでメタ文字を使用してテキストを検索および置換する方法を示しています。

// MSWord文書をロードする
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 for C++では、検索および置換操作中にフィールド内のテキストとリビジョンを無視することもできます。 FindReplaceOptionsクラスでは、このカスタマイズを追加するためのオプションを指定できます。 FindReplaceOptionsクラスは、さまざまなシナリオでテキストを無視するための次のメソッドを提供します。

次のコードサンプルは、上記の各シナリオでテキストを無視する方法を示しています。

// MSWord文書をロードする
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を試すために、無料の一時ライセンスを取得できます。

結論

この記事では、C++を使用してWord文書内のテキストを検索して置換する方法を見てきました。ステップバイステップガイドとコードサンプルは、さまざまなシナリオで検索と置換機能をカスタマイズする方法を示しています。 ドキュメントを使用して、C++Word自動化APIの詳細を調べることができます。

関連項目