在其中一篇文章中,我们已经讨论了作为 .NET 开发人员如何编辑文档中的单词。该策略以多种方式用于擦除敏感内容、隐藏或删除电子邮件地址或身份证号码等私人信息。本文讨论如何在 Java 中的 Word DOC/DOCX 文档中执行单词搜索。我们将分别讨论如何使用 Java API 进行编辑,使用不同的技术来查找和替换文本、单词或短语。

下面将涵盖以下主题:

用于单词搜索和替换文本的 Java API

GroupDocs 提供了一个 Java 修订 API,允许查找和替换 MS Word 支持的文件和其他各种文件格式的其他文档的内容。除了文本编辑和光栅化之外,API 还支持元数据、注释、电子表格以及图像编辑功能。文档中提供了 Word 文档、电子表格、演示文稿、图像和 PDF 文档的支持的文件格式

下载或配置

您可以从 下载部分 下载 JAR 文件,或者只获取基于 maven 的 Java 应用程序的 pom.xml 的最新存储库和依赖项配置。

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>https://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-redaction</artifactId>
        <version>21.12</version> 
</dependency>

编辑过程不需要 MS Word 或任何其他第三方软件。现在让我们从处理搜索和替换文本的不同方法开始。以下是以下示例中使用的 Word 文档的屏幕截图。您可以对其他文档格式使用相同的方法,只需对源代码进行很少的更改或不做任何更改。

要编辑文本的文档

使用 Java 查找和替换单词或短语

以下步骤解释了如何在 Java 应用程序中查找并替换 Word 文档中出现的单词/短语。

  • 使用 Redactor 类加载 DOC/DOCX 文件。
  • 使用 ExactPhraseRedactionReplacementOptions 类查找确切的短语或单词。
  • 使用 Redactor 的 apply 方法来应用编辑。
  • 要在更改后将文件保存在不同的位置,请使用输出流。
  • 使用 save 方法保存密文更改。

以下代码使用 Java 在上述 Word 文档中查找并替换单词“John Doe”。它用单词“[censored]”替换了所有出现的“John Doe”。

// 使用 Java 找到确切的短语并将其替换为其他文本
final Redactor redactor  = new Redactor("path/document.docx");
redactor.apply(new ExactPhraseRedaction("John Doe", new ReplacementOptions("[censored]")));
// 如果要将编辑后的文件以不同的名称保存在不同的位置。
FileOutputStream stream = new FileOutputStream("path/exactPhrase.docx");
RasterizationOptions rasterOptions = new RasterizationOptions();
rasterOptions.setEnabled(false);
redactor.save(stream, rasterOptions);

代码的输出如下。

使用精确短语编辑

Java 中区分大小写的单词搜索和替换文本

您似乎对单词的确切字母大小写持谨慎态度,只想替换仅与区分大小写的搜索匹配的单词。以下代码替换了 Java 中单词“John Doe”的完全大小写匹配的存在。

// 查找确切的短语(区分大小写)并使用 Java 将其替换为其他文本
final Redactor redactor  = new Redactor("path/document.docx");
redactor.apply(new ExactPhraseRedaction("John Doe", true /*isCaseSensitive*/, new ReplacementOptions("[censored]")));
redactor.save();

代码的输出如下。

区分大小写的编辑

在 Java 中使用正则表达式 (RegEx) 替换文本

如果您不想更改确切的单词,而是更改文档中存在的某些模式,则可以使用正则表达式。以下步骤允许您在 Java 应用程序中使用正则表达式 (RegEx) 查找和替换任何文本模式。

  • 使用 Redactor 类加载文档。
  • 使用 RegexRedaction 创建 RegEx。
  • 使用 ReplacementOptions 提供文本以替换 RegEx 匹配项。
  • 使用 apply 方法替换所有正则表达式匹配项。
  • 使用 save 方法获取编辑后的文档。

以下代码显示了如何使用 RegEx 在 Word 文件中执行单词搜索并使用 Java 将其替换为其他文本。

// 使用正则表达式查找文本并使用 Java 将其替换为其他文本
final Redactor redactor  = new Redactor("path/document.docx");
redactor.apply(new RegexRedaction("\\d{2}\\s*\\d{2}[^\\d]*\\d{6}", new ReplacementOptions("[censored]")));
redactor.save();

以下是上述代码的输出:

正则表达式编辑

用 Java 中的彩色框替换文本

如果您不想替换您的内容而只想隐藏它,API 允许您通过在其上画一个框来覆盖文本匹配。以下 Java 代码使用黑色矩形框隐藏文本。

// 查找文本并通过使用 Java 在其上绘制矩形来隐藏它
final Redactor redactor  = new Redactor("path/document.docx");
redactor.apply(new ExactPhraseRedaction("John Doe", true, new ReplacementOptions(java.awt.Color.BLACK)));
redactor.save();

上述代码的输出如下。

使用 Box 隐藏文本

获取免费的 API 许可证

您可以获得免费的临时许可证,以便在不受评估限制的情况下使用 API。

结论

总而言之,您学习了如何执行单词搜索以使用精确文本短语搜索、区分大小写的搜索、使用正则表达式搜索以及最后但并非最不重要的隐藏文本而不是替换文本来查找 Word 文档中的文本。您可以使用这些不同的技术以不同的方式替换 MS Word 文档中的发现。

有关 API 的更多详细信息和学习,请访问 文档。如有疑问,请通过论坛 联系我们。

也可以看看