本文介绍了在 .NET 或 .NET Core 应用程序中使用 C# 在 Word 文档中查找和替换文本的各种方法。

查找和替换是 MS Word 的一项非常有用的功能,可以快速定位和替换文档中所需的文本。当您处理较长的文档时,它变得更加方便和省时。如果您需要在数百个 Word 文档中查找和替换文本,或者您需要自动化此过程,您肯定会选择以编程方式进行。因此,在本文中,我将向您展示如何使用 C# 在不同的场景中以编程方式查找和替换 Word 文档中的文本。阅读本文后,您将能够:

用于在 Word 文档中查找和替换文本的 C# 库

首先,在 Visual Studio 中创建一个新的 C# 项目(Console、ASP.NET 等)并通过 NuGet 包管理器或包管理器控制台安装 Aspose.Words for .NET

通过 NuGet 包管理器安装

在 Word DOC 中查找和替换文本

通过包管理器控制台安装

PM> Install-Package Aspose.Words

在我们为 .NET 安装 Aspose.Words 之后,现在让我们开始在以下 Word 文档中查找和替换文本。

c#在word文档中查找和替换文本

在 C# 中查找和替换 Word 文档中的文本

以下是使用 Aspose.Words for .NET 在 Word 文档中查找和替换特定文本的步骤。

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文档中查找文本

使用 C# 查找和替换 Word 文档中的相似词

您还可以自定义 API 以查找相似词并将其替换为特定词。例如,您可以找到单词“sad”和“mad”并将它们替换为单个单词。以下代码示例展示了如何使用 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#替换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");

输出

如何替换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");

输出

Word 文档在 C#.NET 中查找和替换文本

使用 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");

输出

使用正则表达式 C# 查找和替换文本

结论

本文介绍了一些有用的方法,可根据匹配或相似的单词、短语和正则表达式模式以编程方式查找和替换 Word 文档中的文本。这些功能不仅可以自动执行文本替换过程,还可以节省您在 Word 文档中手动查找和替换操作所需的大量时间和精力。您可以使用 文档 了解有关 Aspose 单词库的更多信息。

相关文章)

提示:您可能对免费的 Text to GIF Converter 感兴趣,它允许您从文本生成动画。