查找和替换是 MS Word 提供的一项有用功能,可让您一次更新所有出现的特定文本。因此,您不必手动查找和替换整个文档中的文本。在本文中,您将学习如何在 C++ 应用程序中查找和替换 Word 文档中的文本。当您需要一次性替换多个文档中的特定文本时,这可能很有用。
用于查找和替换文本的 C++ API
Aspose.Words for C++ 是一个 C++ 库,用于创建新的和操作现有的 Word 文档。 API 支持广泛的基本和高级 Word 自动化功能。您可以 下载 API 包或使用 NuGet 安装它。
Install-Package Aspose.Words.Cpp
使用 C++ 查找和替换 Word 文档中的文本
以下是使用 Aspose.Words for C++ 在 Word 文档中查找和替换文本的步骤。
- 使用 Document 类加载 Word 文档。
- 使用 Document->getRange()->Replace(u"sad", u"bad", System::MakeObject 替换所需的单词) 方法。
- 使用 Document->Save(String) 方法保存更新的 Word 文档。
以下代码示例展示了如何使用 C++ 在 Word 文档中查找单词“sad”并将其替换为“bad”。
// 加载 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");
使用正则表达式查找和替换文本
您还可以定义正则表达式以查找和替换遵循特定模式的单词。例如,您可以用单词“bad”替换单词“sad”和“mad”。以下是在 Word 文档中查找和替换与正则表达式匹配的单词的步骤。
- 使用 Document 类加载 Word 文档。
- 使用 Regex 类来定义正则表达式。
- 使用 Document->getRange()->Replace(System::MakeObject 替换所需的单词System::Text::RegularExpressions::Regex, u"bad", options) 方法。
- 使用 Document->Save(String) 方法保存更新的 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 for 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 for C++ 还允许您在查找和替换操作期间忽略字段中的文本和修订。 FindReplaceOptions 类允许您指定添加此自定义的选项。 FindReplaceOptions 类提供以下方法来在不同场景中忽略文本:
- setIgnoreFields(bool) - Ignores text inside the fields
- setIgnoreDeleted(bool) - Ignores text inside the delete revisions
- setIgnoreInserted(bool) - Ignores text inside the insert revisions
以下代码示例显示了如何在上述每种情况下忽略文本。
// 加载 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。
结论
在本文中,您了解了如何使用 C++ 在 Word 文档中查找和替换文本。分步指南和代码示例展示了如何在不同场景下自定义查找和替换功能。您可以使用 documentation 探索有关 C++ Word 自动化 API 的更多信息。