如果我给了一个带有特殊标签的.doc文件,例如[first_name],我如何用“Clark”之类的东西替换它的所有出现?只有替换字符串的长度完全相同时,才能使用简单的二进制替换。
Haskell,C和C ++的答案是最好的,但任何编译语言都可以。我也更喜欢在没有外部库的情况下执行此操作,因为它必须部署在Windows和Linux上,并且跨平台依赖性处理是一个婊子。
总结......
.doc -> magic program -> .doc with strings replaced
答案 0 :(得分:4)
您可以在Windows上使用Word COM组件(“Word.Application”)打开文件,执行替换,保存文件并关闭它。但是,这只是Windows,可能有问题。
你可以做的另一件事是使用OpenOffice.org命令行界面将文件转换为ODF格式,解压缩文件(ODF主要是压缩的XML),用里面的文件替换,重新压缩文件,并将其重新转换为.doc格式。但是,OpenOffice.org并不总是正确读取Word文件(特别是如果存在大量复杂的格式),并且它可能使分发更加困难(用户必须拥有OpenOffice.org,或者必须将其与您的程序一起分发)。
此外,如果你有一个.docx格式的文件,你可以解压缩它,进行替换,并重新压缩它。
答案 1 :(得分:2)
首先阅读Word Document Specification。
如果这并没有吓到你,那么你应该发现如何阅读和写它是相当简单的。一定是可能的; Word设法在大多数时间内完成它。
答案 2 :(得分:1)
您可能必须使用.Net编程(VB或C#)来创建Word.Application
的对象,然后使用MS Word对象模型来操作您的文档。
答案 3 :(得分:0)
为什么要使用C / C ++ / Haskell或其他编译语言?我对Haskell并不太熟悉,但总的来说我会说C不是执行文本处理的好语言。许多解释语言(Perl,Python等)也有强大的正则表达式库,适合查找和替换短语。
话虽如此,正如其他海报所说,你仍然需要处理.doc格式的怪癖。