3

如果给我一个带有特殊标签的 .doc 文件,例如 [first_name],我该如何用“Clark”之类的东西替换所有出现的文件?仅当替换字符串的长度完全相同时,简单的二进制替换才有效。

Haskell、C 和 C++ 的答案是最好的,但任何编译语言都可以。我也更愿意在没有外部库的情况下执行此操作,因为它必须部署在 Windows 和 Linux 上,并且跨平台依赖处理是个婊子。

总结...

.doc -> magic program -> .doc with strings replaced
4

4 回答 4

4

您可以使用 Windows 上的 Word COM 组件(“Word.Application”)打开文件、进行替换、保存文件并关闭它。但是,这仅适用于 Windows,并且可能有问题。

您可以做的另一件事是使用 OpenOffice.org 命令行界面将文件转换为 ODF 格式,解压缩文件(ODF 主要是压缩的 XML),用里面的文件进行替换,重新压缩文件,然后重新- 将其转换为 .doc 格式。但是,OpenOffice.org 并不总是能正确读取 Word 文件(尤其是在有很多复杂格式的情况下),并且它可能会使其更难分发(用户必须拥有 OpenOffice.org 或者您必须将其与您的程序一起分发)。

此外,如果您有 .docx 格式的文件,您可以将其解压缩、替换并重新压缩。

于 2010-08-11T19:06:32.853 回答
2

首先阅读Word 文档规范

如果这还没有吓到您,那么您应该会发现弄清楚如何读写它相当简单。必须是可能的;Word 大部分时间都能做到这一点。

于 2010-08-11T19:07:05.327 回答
1

您可能必须使用 .Net 编程(VB 或 C#)创建一个对象,Word.Application然后使用 MS Word 对象模型来操作您的文档。

于 2010-08-11T19:00:32.210 回答
0

为什么要使用 C/C++/Haskell 或其他编译语言?我对 Haskell 不太熟悉,但总的来说,我会说 C 不是执行文本处理的好语言。许多解释型语言(Perl、Python 等)也具有强大的正则表达式库,适用于查找和替换短语。

话虽如此,正如其他海报所指出的那样,您仍然必须处理 .doc 格式的怪癖。

于 2010-08-11T20:14:07.453 回答