Archivos
Hola a todos espero que estén bien primero que nada.
Bueno pues como aveces tienes que copiar y pegar correos, que le tienes que quitar la coma y así me surgió hacer este programa.
Cosiste en esto:
Tengo todos estos emails:
Y quiero que queden asi:
jonathan@hotmail.com
ab.san@hotmail.com
astillo@villacero.com.mx
Este es mi código:
Pero ahi un problema solamente me guarda el primer email que es :
jonathan@hotmail.com
Habia pensado meter todo lo del archivo en un Array y de ahi irme en posiciones.
Si alguien me puede decir alguna mejor solución se lo agradecería.
Saludos.
- JaimeItlzc's blog
- Inicie sesión o regístrese para enviar comentarios
prueba unitaria
Separación de tareas, pruebas unitarias, etc... separa tu código: debes tener una rutina a la que le pasas una cadena con todos los mails y te devuelve una lista de cadenas con los puros correos, sin nombres. Eso lo puedes probar pasándole una cadena sin importar de dónde venga.
Aparte haces un método que lea la cadena del archivo. Esa la pruebas comprobando que se lea el contenido que estás esperando (lo que sabes que viene en un archivo de prueba).
En cuanto al código que obtiene las direcciones... yo haría algo así:
Jejeje solo por pasar el rato :P
Hola @JaimeItlzc, pues solo por pasar el ratito libre en el trabajo te dejo una mini mini versión toda chafa y nada funcional de como no lo aria yo jejeje, pero bueno para fines de repaso sirve:
Osea en un bucle
Osea en un bucle como
Asi o me equivoco?
Gracias.
Algo así aria yo.
Pues así aria yo para resolver tu duda:
EDIT: Al imprimir el correo editado en el método
, conviene poner un trim(), para evitar los saltos de linea no deseados.
por
Un saludo a @OscarRyz y un dia me explicas a detalle como jelgorios funciona el metodo readFile; ¿Por qué Orcar? a pus por que el hizo la pregunta en stackoverflow jejejeje pero en relidad esto es para otro hilo y la pregunta a quien la sepa =).
Gracias ezamudio y rodrigo salado anaya.
Mira rodrigo asi quedo agarrando los correos de un fichero.
En un rato pongo la propuesta de @Ezamudio
Gracias.
@JaimeItlzc ejemmm
Quehubolas Jaime, pues si en un dado caso ponen contenido en el archivo de correos como:
y usas este método tuyo:
se trunca la salida, algo como:
ammm, por otro lado revisa bien el código del tu while, para que quede algo como:
checa que reemplace el correo por str vale : ).
Split()
Si le quito el metodo
solo me regresa un solo correo que es el primero. :S
Un saludoo..
Si OscarRyz Explicanos :P
String tokenizer
yo lo hubiese hecho con el StringTokenizer... digo... cuestión de gustos...
split(",")
Si lo siento Jaime no tengo un jdk a la mano pero me falto código por poner... : S
Mas generico
Si en hay un salto de linea y no se lee la coma o si se olvidaron de poner una coma podriamos centrarnos en un elemento que siempre aparece en un email ,la arroba.
Con expresiones regulares
Puedes utilizar expresiones regulares. En este programa el contenido del archivo se pasa a una cadena en la cual se hace la búsqueda de la expresión regular.
Si utilizas expresiones regulares, no es necesario hacer un programa ya que muchos editores las soportan (Notepad++, Pspad, etc.). Yo utilizo el editor de Netbeans para hacer transformaciones de texto como el de este ejemplo.
CSV
¿Porqúe no utilizas Comma Separated Values?...Es bien simple en donde tienes: "correo de alguien < calguien@de.com >", "correo de otro alguien < cotroalguien@de.com >", "correo de alguien mas < calguienmas@de.com >", cada cosa es una cadena antes y después de una coma, lo podemos ver a bajo nivel cómo un arreglo. De ahí (después de procesar un csv) a split y de ahí a quitar los "<" y ">". Es la que se me ocurre.
En otro caso de no tener ningún archivo, mi recomendación serían las expresiones regulares o de nuevo el split. Pero me decantaría más por las expresiones regulares.
Liga de CSV para Java aquí.