Buscar y reemplazar palabra en archivo

Iniciado por fran7385, 28 Enero 2014, 17:01 PM

0 Miembros y 2 Visitantes están viendo este tema.

fran7385

Hola, tengo una duda sobre como encarar esto.
Tengo un archivo .doc el cual tiene la siguiente estructura:
Citar... mi nombre es <nombre> y vivo en la ciudad <ciudad> ...
La idea es que el usuario ingresa su nombre y ciudad y el programa abre el .doc modelo, busca la etiqueta <nombre> y la reemplaza con la variable que ingreso el usuario (cuando se le pidió que ingrese su nombre).
Lo hice de varias formas pero no me termina de convencer, una forma era crear un nuevo .doc e ir leyendo el 'modelo' y escribiendo el nuevo .doc paralelamente y cuando encuentra la etiqueta la reemplaza con la variable; otra forma que probe fue duplicar el 'modelo' y buscar y reemplazar las palabras siempre trabajando sobre el duplicado y dejando el modelo original de lado.
Hay aproximandamente 15 etiquetas a reemplazar y algunas se repiten a lo largo del documento.

Como me aconsejan que lo encare?
Lo trato como archivo de texto o binario (para guardar la posicion de las etiquetas tal vez?)?

Lo que mas dudas me deja es que de la forma que lo hago yo, estoy comparando cada palabra del archivo con las 15 etiquetas y no encuentro alguna otra forma para hacerlo.

Notar que el archivo final debe tener el mismo formato que el modelo, sangrias, negrita, cursiva, mayusculas, colores, etc.

Gracias.
Saludos.

ivancea96

Yo haría un bucle que lea una parte, reemplace lo que quieras reemplazar, y lo escriba en un nuevo archivo.

fran7385

Y como te parece mejor? leer palabra por palabra y buscar y reemplazar o leer por renglon?
Lo que no me convence mucho es el tema de tener que ir comparando cada palabra del archivo con las 15 etiquetas, pero no creo que haya otra forma, o por lo menos no se me ocurre...

Gracias. Saludos.

ivancea96

Yo no veo otra forma. Pero bueno, el programa lo hace rápido. Si son palabras lo que tienes que reemplazar, yo diría de ir leyendo del archivo cada espacio. Pero eso ya como tú veas.