この記事では、.NETまたは.NET CoreアプリケーションでC#を使用してWord文書内のテキストを検索および置換するためのさまざまなアプローチについて説明します。
検索と置換は、ドキュメント内の目的のテキストをすばやく見つけて置換するためのMSWordの非常に便利な機能です。長いドキュメントで作業する場合は、より便利で時間を節約できます。何百ものWord文書のテキストを見つけて置き換える必要がある場合、またはこのプロセスを自動化する必要がある場合は、プログラムで実行することを選択します。したがって、この記事では、C#を使用してさまざまなシナリオでプログラムでWord文書内のテキストを検索して置き換える方法を紹介します。この記事を読むと、次のことができるようになります。
- C#を使用してWord DOC/DOCXのテキストを検索して置換する
- Word文書で類似した単語を見つけて置換する
- 正規表現を使用してテキストを検索して置換する
- Word文書のヘッダー/フッター内のテキストを見つけて置き換えます
- Word文書内のテキストを検索してメタ文字に置き換えます
Word文書内のテキストを検索して置換するためのC#ライブラリ
まず、Visual Studioで新しいC#プロジェクト(コンソール、ASP.NETなど)を作成し、NuGetパッケージマネージャーまたはパッケージマネージャーコンソールを介してAspose.Words for .NETをインストールします。
NuGetパッケージマネージャーを介したインストール
パッケージマネージャーコンソールを介したインストール
PM> Install-Package Aspose.Words
Aspose.Words for .NETをインストールしたら、次のWordドキュメントのテキストの検索と置換を開始しましょう。
C#でWord文書のテキストを検索して置換する
以下は、Aspose.Words for .NETを使用してWord文書内の特定のテキストを検索して置換する手順です。
- Documentクラスのインスタンスを作成し、Wordドキュメントのパスで初期化します。
- Document.Range.Replace(string, string, FindReplaceOptions)メソッドを使用してテキストを検索および置換します。
- Document.Save(string)メソッドを使用してドキュメントを保存します。
FindReplaceOptionsクラスは、検索/置換操作をカスタマイズするためのさまざまなオプションを提供します。次のコードサンプルは、C#を使用してWordドキュメント内の特定の単語または文字列を検索して置換する方法を示しています。
// Wordのdocxドキュメントを読み込む
Document doc = new Document("document.docx");
// ドキュメント内のテキストを検索して置換します
doc.Range.Replace("sad", "[replaced]", new FindReplaceOptions(FindReplaceDirection.Forward));
// Word文書を保存する
doc.Save("Find-And-Replace-Text.docx");
出力
C#を使用してWord文書内の類似した単語を検索して置換する
APIをカスタマイズして、類似した単語を検索し、それらを特定の単語に置き換えることもできます。たとえば、「sad」と「mad」という単語を見つけて、それらを1つの単語に置き換えることができます。次のコードサンプルは、C#を使用してWordドキュメント内の類似した単語を検索して置換する方法を示しています。
// Wordのdocxドキュメントを読み込む
Document doc = new Document("document.docx");
FindReplaceOptions options = new FindReplaceOptions();
options.MatchCase = true;
// ドキュメント内のテキストを検索して置換します
doc.Range.Replace(new Regex("[B|S|M]ad"), "[replaced]", options);
// Word文書を保存する
doc.Save("Find-And-Replace-Multiple-Words.docx");
出力
C#で正規表現を使用してテキストを検索して置換する
特定のパターンで表示されるテキストを検索して置換したい場合があります。たとえば、Word文書内のすべての電子メールIDを非表示/置換する必要があります。このような場合、電子メールIDの正規表現を作成し、それをDocument.Range.Replace(Regex、string, FindReplaceOptions)メソッドに渡すことができます。
次のコードサンプルは、Wordドキュメントのパターンに基づいてテキストを検索して置換する方法を示しています。
// Wordのdocxドキュメントを読み込む
Document doc = new Document("document.docx");
FindReplaceOptions options = new FindReplaceOptions();
options.FindWholeWordsOnly = true;
// メールIDの正規表現を設定する
Regex EmailRegex = new Regex(@"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?");
// ドキュメント内のテキストを検索して置換します
doc.Range.Replace(EmailRegex, "[replaced]", options);
// Word文書を保存する
doc.Save("Find-And-Replace-Text-Using-Regex.docx");
出力
C#を使用してWord文書のヘッダー/フッター内のテキストを検索して置換する
HeaderFooterクラスを使用して、Word文書のヘッダーまたはフッターセクションのテキストを検索して置き換えることもできます。この目的には、HeaderFooter.Range.Replace(string, string, FindReplaceOptions)メソッドが使用されます。次のコードサンプルは、C#でWord文書のヘッダー/フッターのテキストを置き換える方法を示しています。
// Word文書をロードする
Document doc = new Document("document.docx");
// Wordドキュメントのヘッダー/フッターにアクセスします
HeaderFooterCollection headersFooters = doc.FirstSection.HeadersFooters;
HeaderFooter footer = headersFooters[HeaderFooterType.FooterPrimary];
// オプションを設定する
FindReplaceOptions options = new FindReplaceOptions
{
MatchCase = false,
FindWholeWordsOnly = false
};
// Wordドキュメントのフッターのテキストを置き換えます
footer.Range.Replace("This is footer of the document.", "Copyright (C) 2020 by Aspose Pty Ltd.", options);
// Word文書を保存する
doc.Save("Find-And-Replace-Text-in-Footer.docx");
出力
C#を使用して、Word文書内のテキストを検索してメタ文字に置き換える
特定のテキストまたはフレーズが複数の段落、セクション、またはページで構成されているシナリオが考えられます。このような場合、単純な検索と置換の方法は効果的に機能せず、段落の区切り、セクションの区切り、またはページの区切りを処理する必要があります。このため、Aspose.Wordsを使用すると、検索文字列または置換文字列で次のメタ文字を使用できます。
- &p: 段落区切り
- &b: セクションブレーク
- &m: ページ分割
- &l: 改行
次のコードサンプルは、Word文書のテキストを検索して段落区切りに置き換える方法を示しています。
// Wordのdocxドキュメントを読み込む
Document doc = new Document("document.docx");
// オプションを設定する
FindReplaceOptions options = new FindReplaceOptions
{
MatchCase = false,
FindWholeWordsOnly = false
};
// テキストを段落区切りに置き換えます
doc.Range.Replace("First paragraph ends.&pSecond paragraph starts.", "[replaced]", options);
// Word文書を保存する
doc.Save("Find-And-Replace-Text-Paragraph-Break.docx");
出力
結論
この記事では、一致または類似した単語、フレーズ、正規表現パターンに基づいて、Wordドキュメント内のテキストをプログラムで検索して置換するための便利な方法について説明します。これらの機能は、テキストの置換プロセスを自動化するだけでなく、Word文書での手動の検索と置換操作に必要な時間と労力を大幅に節約します。 ドキュメントを使用して、Asposeのワードライブラリについて詳しく知ることができます。
関連記事
ヒント:テキストからアニメーションを生成できる無料のText to GIFConverterに興味があるかもしれません。