Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Manejo de Strings

Buenos días,

Tengo un response data de una pagina web, con código javascript, en ese código hay datos de usuarios como nombre, cédula, teléfono, dirección, y estoy implementando una clase en java para poder mapear esos datos a su respectivo campo, es decir la impresión seria esta:

consultaPersona 0 ->nombre=GERMAN BRIÃ?EZ
consultaPersona 1 ->documento =93738636
consultaPersona 2 ->telefono=57442056320
consultaPersona 3 ->direccion=CL 159 No 7H-43 PS 40

Este es el response data solo un fragmento:
ibp`1`crf`234`dft`6`t`233`dn`904`8`0`f`0`itx`1`n`907`sc`0`l`1`crf`234`dft`6`t`242`dn`426`8`0`f`0`itx`1`n`427`sc`0`l`1`crf`234`dft`6`t`242`dn`349`8`0`f`0`itx`1`n`909`sc`0`l`1`crf`234`dft`6`t`242`dn`429`8`0`f`0`itx`1`n`431`sc`0`l`1`crf`234`dft`6`t`242`dn`432`11`0`f`0`itx`1`n`188`sc`0`irq`1`l`15`crf`234`dft`6`ihn`1`iro`1`t`238`dn`188`3`2`rl`0`crnm`1`nmr`1`atr`0`2`0`r`0`v`13*GERMAN BRIÃ?EZ1*56*BRIÃ?EZ17*Cedula Ciudadania9*Prospecto0*0*8*193738636*ACTIVO0*6*GERMAN0*0*0*0*0*0*0*0*0*7*Pionero0*11*+57442056320*6*SADMIN1*N23*CL 159 No 7H-43 PS

dentro de los asteriscos están los datos que quiero mapear a sus campos correspondientes.

Yo tengo la siguiente clase que me permite encontrar la información analizando el response data, es la siguiente;
Este es el método que estoy implementando:

public String[] consultaPersona(String textoTotal, String textoBuscar,
boolean inicioBusqueda) {

System.out.println("Entro a la operacion consultaPersona");
String[] datoRetorno = new String[4];
int puntoBus = textoTotal.indexOf(textoBuscar); // "v`34*");
String texto = "";
int punto = 0;
System.out.println("puntoBus " + puntoBus + " " + textoBuscar);
if (puntoBus > 0) {
puntoBus = textoTotal.indexOf("*", puntoBus + 2);
texto = textoTotal.substring(puntoBus + 1,
textoTotal.indexOf("*", puntoBus + 1));

datoRetorno[0] = "nombre=" + texto.replaceAll("[\\d]", "");// Nombre
// Completo
System.out.println("texto " + texto.replaceAll("[\\d]", ""));
//punto = puntoBus + 6;
for (int y = 0; y < 7; y++) {

punto = textoTotal.indexOf("*", puntoBus + 1);


}

texto = textoTotal.substring(punto + 49,
textoTotal.indexOf("*", punto + 50));
System.out.println("texto = " + texto.replaceAll("[a-zA-Z]", ""));
datoRetorno[1] = "documento =" + texto;// Cedula
for (int y = 0; y < 15; y++) {
punto = textoTotal.indexOf("*", punto + 1);

}
texto = textoTotal.substring(punto + 22,
textoTotal.indexOf("*", punto + 22));
System.out.println("texto= " + texto.replaceAll("[a-zA-Z]", ""));
datoRetorno[2] = "telefono=" + texto; // Telefono
for (int y = 0; y < 4; y++) {

punto = textoTotal.indexOf("*", punto + 1);

}
texto = textoTotal.substring(punto + 40,
textoTotal.indexOf("*", punto + 50));
System.out.println("texto= " + texto.replaceAll("[a-zA-Z]", ""));
datoRetorno[3] = "direccion=" + texto; // Direccion

}

System.out.println("consultaPersona 0 ->" + datoRetorno[0]);
System.out.println("consultaPersona 1 ->" + datoRetorno[1]);
System.out.println("consultaPersona 2 ->" + datoRetorno[2]);
System.out.println("consultaPersona 3 ->" + datoRetorno[3]);
return datoRetorno;
}

Y por ultimo tengo el main donde ingreso el response data para ser analizado,

String textoTotal = ("`0`4`api`0`2`0`sc`0`rqc`369`v`19*Tipo Identificación`0`1`nbo`.....etc // esta cadena contiene 3004 caracteres no la pondre completa.

Creo un objeto para implementar el metodo:

htpB.consultaPersona(textoTotal, "`crnm`1`nmr`1`atr`", true);

En el método estoy especificando que a partir del primer asterisco me comience a mapear la información, pero hay varios asteriscos que cambian aleatoriamente en los diferentes response data, así que si ubico manualmente en el caracter especifico en la variable punto, logro mapear correctamente, pero para los demás no es así, y no encuentro la lógica para poder mapear la información de forma aleatoria.

De antemano gracias por la atención.

julio 17, 2013 | Registered Commenternosferatus22

Guenas.

¿Has probado mediante expresiones regulares?
Quizá te resulte mas fácil.

Salut,
Paposo

julio 18, 2013 | Unregistered CommenterPaposo

Hola, muchas gracias voy a probar, y te comento!!

julio 18, 2013 | Registered Commenternosferatus22