Pregunta

Si me dan un archivo .doc con etiquetas especiales en que, como [nombre apellido], ¿cómo hago para reemplazar todas las ocurrencias de la misma con algo como "Clark"? Un reemplazo binaria sencilla sólo funciona si la cadena de reemplazo es exactamente la misma longitud.

Haskell, C y C ++ respuestas serían mejores, pero cualquier lenguaje compilado harían. También me prefiere hacerlo sin una biblioteca externa, ya que tiene que ser desplegado en Windows y Linux y manejo de la dependencia multiplataforma es una perra.

Para resumir ...

.doc -> magic program -> .doc with strings replaced
¿Fue útil?

Solución

Se puede utilizar el componente COM Palabra ( "Word.Application") en Windows para abrir el archivo, hacer los reemplazos, guarde el archivo, y cerca de ella. Sin embargo, esto es sólo para Windows y puede tener errores.

Otra cosa que podría hacer es utilizar la interfaz de línea de comandos OpenOffice.org para convertir el archivo al formato ODF, descomprimir el archivo (ODF XML es en su mayoría en zip), hacer los reemplazos con los archivos dentro, volver a comprimir el archivo , y volver a convertirla a formato .doc. Sin embargo, OpenOffice.org no siempre leer archivos de Word correctamente (sobre todo si hay una gran cantidad de formatos complejos) y puede hacer más difícil para distribuir (los usuarios deben tener ya sea OpenOffice.org o debe distribuirlo con su programa).

Además, si usted tiene un archivo en el formato .docx, puede descomprimirlo, hacer los reemplazos, y volver a la cremallera.

Otros consejos

En primer lugar leer el rel Word especificación de documento .

Si eso no le ha aterrado, entonces debería buscar que sea bastante sencillo de encontrar la manera de leer y escribir. Debe ser posible; Palabra se las arregla para hacer que la mayor parte del tiempo.

Es probable que tenga que utilizar la programación .Net (VB o C #) para crear un objeto de Word.Application y luego usar el modelo de objetos de MS Word para manipular el documento.

¿Por qué quiere ser en C / C ++ / Haskell u otro lenguaje compilado? No estoy muy familiarizado con Haskell, pero en general yo diría que C no es un gran lenguaje para tareas de procesamiento de texto. Una gran cantidad de lenguajes interpretados (Perl, Python, etc.) también tienen potentes bibliotecas de expresiones regulares que son apropiados para la búsqueda y reemplazo frases.

Dicho esto, como han dicho en los otros carteles, que todavía tendrá que hacer frente a las excentricidades del formato .doc.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top