Microsoft Wordの「検索と置換」は、ドキュメント編集時に重要な機能です。Word ドキュメント内の特定のテキストを素早く検索し、一度にすべてのインスタンスを置き換えることができます。これは、大規模な Word ドキュメントで情報を更新したり、つづりの間違いを修正する必要がある場合に特に役立ちます。この記事では、Spire.Doc for C++ を使用して C++ で Word 文書内のテキストを検索して置換する方法について説明します。 テキストを検索して、そのすべてのインスタンスを新しいテキストに置き換える テキストを検索して、その最初のインスタンスを新しいテキストに置き換える 正規表現を使用してテキストを検索して置き換える テキストを検索して画像に置き換える Spire.Doc for C++ をインストールします Spire.Doc for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。 Spire.Doc for C++ を C++ アプリケーションに統合する方法 テキストを検索して、そのすべてのインスタンスを新しいテキストに置き換える テキストを検索し、そのすべてのインスタンスを別のテキストに置き換えるには、Document->Replace() メソッドを使用してください。詳細な手順は次のとおりです。 Document クラスのインスタンスを初期化します。 Document->LoadFromFile() メソッドを使用して Word ドキュメントをロードします。 特定のテキストを検索し、Document->Replace() メソッドを使用してすべてのインスタンスを別のテキストに置き換えます。 Document->SaveToFile() メソッドを使用して結果ドキュメントを保存します。 C++ #include "Spire.Doc.o.h" using namespace Spire::Doc; using namespace std; int main() { //Documentクラスのインスタンスを初期化する Document* document = new Document(); //Wordドキュメントをロードする document->LoadFromFile(L"Input.docx"); //特定のテキストを検索して、すべてのインスタンスを別のテキストに置換える document->Replace(L"Spire.Doc", L"E-iceblue", false, true); //結果ドキュメントを保存する document->SaveToFile(L"ReplaceAllInstances.docx", FileFormat::Docx2013); document->Close(); delete document; } テキストを検索して、その最初のインスタンスを新しいテキストに置き換える Spire.Doc for C++ は置換モードを変更できる Document->SetReplaceFirst() メソッドを提供します。変更後、すべてのインスタンスではなく最初のインスタンスを置き換えできます。詳細な手順は次のとおりです。 Document クラスのインスタンスを初期化します。 Document->LoadFromFile() メソッドを使用して Word ドキュメントをロードします。 Document->SetReplaceFirst(true) メソッドを使用して、置換モードを変更します。 Document->Replace() メソッドを使用して、テキストの最初のインスタンスを別のテキストに置き換えます。 Document->SaveToFile() メソッドを使用して結果ドキュメントを保存します。 C++ #include "Spire.Doc.o.h" using namespace Spire::Doc; using namespace std; int main() { //Documentクラスのインスタンスを初期化する Document* document = new Document(); //Wordドキュメントをロードする document->LoadFromFile(L"Input.docx"); //置換モードを変更する document->SetReplaceFirst(true); //テキストの最初のインスタンスを別のテキストに置き換える document->Replace(L"Spire.Doc", L"E-iceblue", false, true); //結果ドキュメントを保存する document->SaveToFile(L"ReplaceFirstInstance.docx", FileFormat::Docx2013); document->Close(); delete document; } 正規表現を使用してテキストを検索して置き換える Document->Replace() メソッドを使用して、正規表現に一致するテキストを新しいテキストに置き換えることができます。そして、Regex インスタンスと新しいテキストをパラメータとしてメソッドに渡します。詳細な手順は次のとおりです。 Document クラスのインスタンスを初期化します。 Document->LoadFromFile() メソッドを使用して Word ドキュメントをロードします。 Regex クラスのインスタンスを初期化して正規表現を作成します。 Document->Replace() メソッドを使用して、正規表現に一致するテキストを検索し、別のテキストに置き換えます。 Document->SaveToFile() メソッドを使用して結果ドキュメントを保存します。 C++ #include "Spire.Doc.o.h" using namespace Spire::Doc; using namespace std; int main() { //Documentクラスのインスタンスを初期化する Document* doc = new Document(); //Wordドキュメントをロードする doc->LoadFromFile(L"Input1.docx"); //#で始まるテキストに一致する正規表現を作成する Regex* regex = new Regex(L"#w+b"); //正規表現に一致するテキストを検索し、別のテキストに置き換える doc->Replace(regex, L"E-iceblue"); //結果ドキュメントを保存する doc->SaveToFile(L"ReplaceWithRegex.docx", FileFormat::Docx2013); doc->Close(); delete doc; } テキストを検索して画像に置き換える Spire.Doc for C++ には、テキストを画像に置き換える直接的な方法はありません。しかし、テキストの位置に画像を挿入して、テキストを削除することで実現できます。詳細な手順は次のとおりです。 Document クラスのインスタンスを初期化します。 Document->LoadFromFile() メソッドを使用して Word ドキュメントをロードします。 Document->FindAllString() メソッドを使用して特定のテキストを検索し、そのテキストをコンテナに格納します。 コンテナのテキストをループします。 DocPicture クラスのインスタンスを初期化します。 DocPicture->LoadImageSpire() メソッドを使用して画像をロードします。 検索されたテキストを単一テキスト範囲として取得し、その段落内のテキスト範囲のインデックスを取得します。 テキスト範囲の位置に画像を挿入し、ドキュメントからテキスト範囲を削除します。 Document->SaveToFile() メソッドを使用して結果ドキュメントを保存します。 C++ #include "Spire.Doc.o.h" using namespace Spire::Doc; using namespace std; int main() { //Documentクラスのインスタンスを初期化する Document* doc = new Document(); //Wordドキュメントをロードする doc->LoadFromFile(L"Input.docx"); //特定のテキストを検索し、結果をコンテナに格納する vector<TextSelection*> selections = doc->FindAllString(L"Spire.Doc", true, true); int index = 0; TextRange* range = nullptr; //コンテナのテキストをループする for (auto selection : selections) { //画像をロードする DocPicture* pic = new DocPicture(doc); pic->LoadImageSpire(L"image.png"); //検索されたテキストを単一テキスト範囲として取得する range = selection->GetAsOneRange(); //その段落内のテキスト範囲のインデックスを取得する index = range->GetOwnerParagraph()->GetChildObjects()->IndexOf(range); //インデックスに画像を挿入する range->GetOwnerParagraph()->GetChildObjects()->Insert(index, pic); //テキスト範囲を削除する range->GetOwnerParagraph()->GetChildObjects()->Remove(range); } //結果ドキュメントを保存する doc->SaveToFile(L"ReplaceWithImage.docx", FileFormat::Docx2013); doc->Close(); delete doc; } 一時ライセンスを申請する 結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 にお問い合わせ、30 日間有効な一時ライセンスを取得してください。