Foros del Web » Programación para mayores de 30 ;) » Java »

Separar cadena string

Estas en el tema de Separar cadena string en el foro de Java en Foros del Web. Hola; tengo una duda de como hacer esta clase lo mas homogenia posible Me explico: Tengo un string (28001-Madrid) lo que quiero es que dicha ...
  #1 (permalink)  
Antiguo 18/12/2009, 02:58
Avatar de CopperDavid  
Fecha de Ingreso: mayo-2009
Ubicación: Madrid
Mensajes: 40
Antigüedad: 15 años
Puntos: 1
Separar cadena string

Hola; tengo una duda de como hacer esta clase lo mas homogenia posible

Me explico:

Tengo un string (28001-Madrid) lo que quiero es que dicha clase me devuelva solo el Nombre de la provincia (Madrid).

Alguna idea para como hacer esto??

Muchas gracias de antemano.
  #2 (permalink)  
Antiguo 18/12/2009, 03:09
 
Fecha de Ingreso: enero-2009
Mensajes: 43
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Separar cadena string

Los strings tienen un par de metodos para poder fraccionarlos. Yo suelo utilizar: substring(int desde, int hasta).
El ejmplo que pone el eclipse es el siguiente:

String s = "hamburger";
s.substring(4,8);

esto devolveria "urge"

la priemra letra es 0 y el entero hasta es la primera letra que no coges.

Espero haberme explicado bien.

Un saludo
  #3 (permalink)  
Antiguo 18/12/2009, 03:41
Avatar de CopperDavid  
Fecha de Ingreso: mayo-2009
Ubicación: Madrid
Mensajes: 40
Antigüedad: 15 años
Puntos: 1
Respuesta: Separar cadena string

Hola Juju84;

Primero muchas gracias por contestar, con lo que me explicas es perfecto y conozco los metodos, pero no lo puedo hacer así ya que en el ejemplo de Avila el codigo postal es de 4 digitos - mas provincia. Tambien puede ser que no me venga con el (-) de separación.

La idea que tengo es que desglosando el string, desde el primer caracter comparado con el alfabeto (a,b,c,d...) me devuelva la provincia.

No se si me he explicado bien!! Espero me puedan ayudar.
  #4 (permalink)  
Antiguo 18/12/2009, 03:54
 
Fecha de Ingreso: noviembre-2007
Mensajes: 11
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Separar cadena string

Hola CopperDavid,

prueba a hacer un bucle for con el String y por cada caracter haz un if comparandolo con esto:

matches("[a-zA-Z]*")
  #5 (permalink)  
Antiguo 18/12/2009, 03:55
 
Fecha de Ingreso: enero-2009
Mensajes: 43
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Separar cadena string

Bueno, se me ocurre otra cosa.

Podrias ir comparando los caracteres de del string uno a uno, y cuando un caracter sea una letra entonces te quedas con el contador y fraccionas el string a partir de ese numero que te ha dado. ¿Puede ser asi?
  #6 (permalink)  
Antiguo 18/12/2009, 03:58
Avatar de CopperDavid  
Fecha de Ingreso: mayo-2009
Ubicación: Madrid
Mensajes: 40
Antigüedad: 15 años
Puntos: 1
Respuesta: Separar cadena string

Exacto eso es lo que quiero hacer!!!

Me sabrias explicar como hacerlo??
  #7 (permalink)  
Antiguo 18/12/2009, 04:34
 
Fecha de Ingreso: enero-2009
Mensajes: 43
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Separar cadena string

Si claro!

Necesitamos un string con el codigo y la ciudad: String s = "28001-Madrid"
Y un array o string con todos los numeros, un guion y un espacio en blanco:

String numeros = "0123456789 -";


entonces:

Código:
for(int i=0;i<s.length();i++){
  for(int j=0; j<numeros.length();j++){
    if (s.charAt(i) != numeros.charAt(j)){
         return i;
    }
  }
}
Entonces, te devuelve el contador y ya con ese numero utilizas otro metodo de los Strings, parecido al anterior, pero que te recorta el String desde el numero que le pases hasta el final. Seria asi:

s.substring(i);

Supongo que sera algo asi, mas o menos, pero te puede servir.

Un saludo, cuidate!
  #8 (permalink)  
Antiguo 18/12/2009, 04:38
Avatar de CopperDavid  
Fecha de Ingreso: mayo-2009
Ubicación: Madrid
Mensajes: 40
Antigüedad: 15 años
Puntos: 1
Respuesta: Separar cadena string

Ok muchissimas gracias por tu tiempo!!!

Voy a ponerlo en practica!!!

Gracias...
  #9 (permalink)  
Antiguo 18/12/2009, 06:19
Avatar de CopperDavid  
Fecha de Ingreso: mayo-2009
Ubicación: Madrid
Mensajes: 40
Antigüedad: 15 años
Puntos: 1
Respuesta: Separar cadena string

Perdonad de nuevo!!!

Tengo una duda sobre el tema!!

Quiero recorrer la cadena y cuando encuentra la primera letra [A-Z] guardar la posición. Me explico??

Estoy intentando esto!!

Código HTML:
 public static void main(String args[]){

    		String stCodPostalProvincia = "20830-Madrid";
    		String stProvincia = "";
    		boolean sw = false;
    		
    			for (int i=0;i<stCodPostalProvincia.length();i++)
    			{
    				if (sw != true)
    				{
    					if (stCodPostalProvincia.substring(i,1).matches("[A-Za-z ]")){
    						stProvincia = stCodPostalProvincia.substring(i);
    						sw = true;
    					}
    				}	
    			}
    			System.out.println("Provincia:"+stProvincia);
    	
    }
El problema que tengo es que a la tercera vez que pasa por el bucle me pega un casque que te cagas. Por???

No está bien formada el metodo???
  #10 (permalink)  
Antiguo 18/12/2009, 06:25
 
Fecha de Ingreso: enero-2009
Mensajes: 43
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Separar cadena string

Creo que es por esto: stCodPostalProvincia.substring(i,1)

la primera vez que lo recorra hara esto: stCodPostalProvincia.substring(0,1)
la segunda esto: stCodPostalProvincia.substring(1,1)

hasta aqui bien, pero la tercera vez: stCodPostalProvincia.substring(2,1) y supongo que es hay donde da el fallo, pues no puedes fraccionar el String desde el segundo caracter hasta el primero.

En vez de poner stCodPostalProvincia.substring(i,1) pon stCodPostalProvincia.substring(i,i+1), a ver que pasa, y si no prueba la solucion que te he dado con 2 for que es mas o menos correcta.
  #11 (permalink)  
Antiguo 18/12/2009, 06:27
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Separar cadena string

Francamente creo que el stringtokenizer o el split son de lo más eficaz para estos casos.

http://www.webtutoriales.com/tutoria...-split.42.html
  #12 (permalink)  
Antiguo 18/12/2009, 06:36
Avatar de CopperDavid  
Fecha de Ingreso: mayo-2009
Ubicación: Madrid
Mensajes: 40
Antigüedad: 15 años
Puntos: 1
Respuesta: Separar cadena string

El resultado que obtengo con lo que me cuentas es

Posicion:0
Resultado:20830-Madrid

Código HTML:
Ver original
  1. String s = "20830-Madrid";
  2.             String numeros = "0123456789 -";
  3.                 for(int i=0;i<s.length();i++){
  4.                       for(int j=0; j<numeros.length();j++){
  5.                         if (s.charAt(i) != numeros.charAt(j)){
  6.                             System.out.println("Posicion: "+i);
  7.                              System.out.println("Resultado: "+s.substring(i));
  8.                         }
  9.                       }
  10.                     }

Como lo tengo que hacer, me estoy liando!!!
  #13 (permalink)  
Antiguo 18/12/2009, 06:52
 
Fecha de Ingreso: enero-2009
Mensajes: 43
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Separar cadena string

Sigue haceindo pruebas con ese codigo, yo poco ams puedo decirte.


Antes del if declara 2 varibles char que sean:
char a =s.charAt(i);
char b = numeros.charAt(j);

y en el if compara asi:

if (!a.equalsIgnoreCase(b))

No se, a ver que tal te va, te dejo con ello, depurar te va a tocar a ti, yo ya mas no puedo hacer.
  #14 (permalink)  
Antiguo 18/12/2009, 06:58
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Separar cadena string

Cita:
Iniciado por Fuzzylog Ver Mensaje
Francamente creo que el stringtokenizer o el split son de lo más eficaz para estos casos.

http://www.webtutoriales.com/tutoria...-split.42.html
Eso mismo. , pero directamente con el split. StringTokenizer está "deprecated".

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #15 (permalink)  
Antiguo 18/12/2009, 09:22
 
Fecha de Ingreso: diciembre-2009
Mensajes: 9
Antigüedad: 14 años, 4 meses
Puntos: 0
De acuerdo Respuesta: Separar cadena string

Prueba con esto amigo.

Código:
public class test{

public static void main(String args[]){
String matricula = "20830-Madrid";
String numeros = "0 1 2 3 4 5 6 7 8 9";
int posicion =0;
                for(int i=0;i< matricula .length();i++){
                      if(!numeros.contains(matricula.charAt(i)+"")){
					     if(matricula.charAt(i) == 	'-'){
						    matricula = matricula.substring(0,i-1) + matricula.substring(i+1);
							posicion = i-1;
							break;
						 }
					     posicion = i;
						 break; 
					  }
                      
                    }					
System.out.println("Su matricula es:" + matricula.substring(0, posicion));
System.out.println("Su residencia es:" + matricula.substring(posicion));
}
}
Lo probe con :
"20830-Madrid";
"20830Madrid";
y me funciono ojala te funcione
  #16 (permalink)  
Antiguo 18/12/2009, 10:40
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Separar cadena string

Tanto follón para simplemente tener que hacer
Código:
 matricula.split("-")[1]
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #17 (permalink)  
Antiguo 18/12/2009, 11:31
 
Fecha de Ingreso: diciembre-2009
Mensajes: 9
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Separar cadena string

Cita:
Iniciado por GreenEyed Ver Mensaje
Tanto follón para simplemente tener que hacer
Código:
 matricula.split("-")[1]
Todos los dias se aprende algo gracias no conocia ese metodo
  #18 (permalink)  
Antiguo 18/12/2009, 12:16
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Separar cadena string

Con el API tan completo que tiene Java, yo siempre recomiendo buscar en el javadoc, tutoriales y Google alguna forma de hacerlo que ya esté hecha. Hay un montón de cosas de "bajo nivel" que ya están implementadas y, excepto por razones de aprendizaje, no merece la pena implementar nosotros y es más bien contraproducente.
El API es una caja de sorpresas .
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #19 (permalink)  
Antiguo 18/12/2009, 12:38
 
Fecha de Ingreso: diciembre-2009
Mensajes: 9
Antigüedad: 14 años, 4 meses
Puntos: 0
Sonrisa Respuesta: Separar cadena string

Cita:
Iniciado por GreenEyed Ver Mensaje
Con el API tan completo que tiene Java, yo siempre recomiendo buscar en el javadoc, tutoriales y Google alguna forma de hacerlo que ya esté hecha. Hay un montón de cosas de "bajo nivel" que ya están implementadas y, excepto por razones de aprendizaje, no merece la pena implementar nosotros y es más bien contraproducente.
El API es una caja de sorpresas .
jaja es cierto un dia estaba haciendo un metodo y habia durado dos horas en terminarlo y a los 5 minutos me di cuenta que el api habia uno que hacia lo mismo xD eso lo bueno del api de java tiene la solucion para casi todo uno solo debe moldear el programa .
  #20 (permalink)  
Antiguo 22/12/2009, 08:29
Avatar de CopperDavid  
Fecha de Ingreso: mayo-2009
Ubicación: Madrid
Mensajes: 40
Antigüedad: 15 años
Puntos: 1
Respuesta: Separar cadena string

Muchas gracias a todos por vuestro tiempo, aunque no me sirve el metodo que me exponeis, me está ayudando mucho a plantearme como hacerlo.

Como el formato de provincia me puede variar y no se como me puede llegar a venir. (2035Madrid) (2456891-Madrid) (2456891 Madrid) (Madrid)

Mi intención seria recorrer la cadena de String uno a uno y preguntar si está dentro del abecedario. [A-Z]. Alguien tiene alguna idea??

Existe algún metodo para hacer esto?? Soy novato la verdad y no se como hacerlo para conseguir este metodo.
  #21 (permalink)  
Antiguo 22/12/2009, 08:38
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Separar cadena string

Si el formato te puede variar tanto, la verdad es que es complicado. Si no tienes forma de distinguir una cosa de otra, mal.
Por ejemplo, las letras son la provincia y los numeros el cp.

Si no puedes tener nada seguro así, entonces lo veo mas bien tirando a dificil.
S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #22 (permalink)  
Antiguo 22/12/2009, 09:25
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Separar cadena string

Así a botepronto se me ocurre lo siguiente:

Creas un foreach con un contador i que vaya contando los chars que analizas. Para ese foreach creas un while y vas comprobando que lo que te venga sea numérico (>= 0 y <=9 , o bien usando isDigit(char) xD), cuando no exista un numero obtienes el substring hasta ese punto. Guardas el valor de i en otra variable j y sigues recorriendo y comprobando que lo que te venga sea una letra usando isLetter(char). Si la primera es letra no hay problemas, recorres hasta el final y recoges ese otro substring empezando por j+1 hasta el ultimo valor de i. Si la primera es un espacio o guión, pues cuando encuentres una letra tendrías que guardar la nueva i en j y sacar el substring hasta el final.

De todos modos veo este proceso engorroso en cantidad de cálculos.

Convendría que hicieses que los resultados te llegasen con un formato homogéneo y, a poder ser, tratarlo con expresiones regulares, que te puede resultar más sencillo.

de todos modos si haces que te venga en un formato numero - palabra, podrías hacer un split en el guion, o sustituirlo por un espacio en blanco y hacer un trim para recuperar cada elemento sin los espacios.
  #23 (permalink)  
Antiguo 22/12/2009, 10:48
Avatar de CopperDavid  
Fecha de Ingreso: mayo-2009
Ubicación: Madrid
Mensajes: 40
Antigüedad: 15 años
Puntos: 1
Respuesta: Separar cadena string

Bueno chicos al final encontré la manera de poder hacerlo, yo creo que es un poco engorroso pero me sale.

En principio lo hace rapido, pero yo no se si esto es muy costoso.

Os dejo el codigo para quien la quiera analizar.

Código HTML:
   	      String sCadena = "2825640-cuenca";
   	      String sCadMayu = sCadena.toUpperCase();
   	      String sLetras = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    	  char[] aCaracteres = sCadMayu.toCharArray();
    	  char[] aLetras = sLetras.toCharArray();
    	  boolean sw =false;
    	  
    	  System.out.println("Tranformado a Mayusculas= "+sCadMayu);
    	  
   	      for (int x=0;x<aCaracteres.length;x++)
   	      {
	   	    	  for (int j=0;j<aLetras.length;j++)
	   	    	  {
	   	    		if(sw!= true)
	   	    		{
	   	    		  if ((aCaracteres[x]) == aLetras[j])
	   	    		  {
	   	    			System.out.println("[" + x + "] " + aCaracteres[x]);
	   	    			System.out.println("Provincia: "+sCadena.substring(x));
	   	    			sw =true;
	   	    		  }
	   	    		}

	   	    	  }
   	    	  }
  #24 (permalink)  
Antiguo 22/12/2009, 11:13
 
Fecha de Ingreso: noviembre-2007
Mensajes: 11
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Separar cadena string

si no prueba con esto otro


Cita:
String a = "2825640-cuenca";
String cadena = "";
for (int i=0; i<a.length(); i++){
String subCadena = a.substring(i, i+1);
if (subCadena.matches("[A-Za-z]")){
cadena += subCadena;
}
}
  #25 (permalink)  
Antiguo 23/12/2009, 03:43
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Separar cadena string

Gracias germano, pero tambien debe hacerlo para los numeros, sería algo parecido pero con un while y el matches es para ("[0-9]") ¿no?

Y que no se olvide de hacer el import del regex...
  #26 (permalink)  
Antiguo 23/12/2009, 04:02
Avatar de CopperDavid  
Fecha de Ingreso: mayo-2009
Ubicación: Madrid
Mensajes: 40
Antigüedad: 15 años
Puntos: 1
Respuesta: Separar cadena string

Esta si que si;

Al final encontré la manera de depurar un poco el metodo y funciona bastante bien.

Os dejo el código por si alguine se encontrase con este caso:
Código HTML:
	/**
	 * Método que devuelve el campo de Provincia formateado ya que viene con el codigo postal delante del nombre de la provincia
	 * este metodo está definido para los datos personales de los duplicados ya que viene en un formato (CodigoPostal - Provincia).
	 */ 

	public static String formatearProvincia (String stCodProvincia )
	{
  	  char[] aCaracteres = stCodProvincia.toCharArray();
	  
	      for (int x=0;x<aCaracteres.length;x++)
	      {
	    	  //comparamos el caracter de la cadena con el codigo ASCII
	    	  // ASCII A=65 hasta Z=90 a=97 hasta z=122
	    	  if(((char)aCaracteres[x]>= 65) && ((char)aCaracteres[x]<=90) || ((char)aCaracteres[x]>= 97) && ((char)aCaracteres[x]<=122)) 
	    	  {
	    		  stCodProvincia = stCodProvincia.substring(x);
	    		  break;
	    	  }
	      }
		return stCodProvincia;
	}
Muchas gracias a todos por vuestras respuestas
  #27 (permalink)  
Antiguo 30/12/2009, 11:59
Avatar de elcapi05  
Fecha de Ingreso: diciembre-2009
Mensajes: 20
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Separar cadena string

Cita:
Iniciado por CopperDavid Ver Mensaje
Hola; tengo una duda de como hacer esta clase lo mas homogenia posible

Me explico:

Tengo un string (28001-Madrid) lo que quiero es que dicha clase me devuelva solo el Nombre de la provincia (Madrid).

Alguna idea para como hacer esto??

Muchas gracias de antemano.
Hola amigo, mira estuve analizando lo que quieres, y con ayuda de las expresiones regulares, que en estos casos son lo mejor, encontré una forma que da solución a tu problema:

Código:
String idProvincia = "28001-Madrid";
Matcher mat = null;
Pattern pat = null;
pat = Pattern.compile("^[0-9]+(-?)[a-zA-Z]+");
mat = pat.matcher(idProvincia);
if (mat.find()) {                                                
    System.out.println("Provincia: " + idProvincia.substring(mat.end(1), mat.end()));
}
la expresión regular inclusive esta diseñada para permitir la ausencia del guion "-", espero y esto sea de ayuda para todos lo que deseen algo parecido!

<<< hay cosas que uno tiene que inventar, para que puedan existir >>>

[URL="http://ecanaveras.blogspot.com"]http://ecanaveras.blogspot.com[/URL]
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:30.