String

beapsan
09 de Febrero del 2006
Alguien sabe cómo puedo contar las veces que aparece un carácter en una cadena??? O cómo puedo separar una cadena hasta un determinado carácter??
Ej: Tengo la cadena: Nombre1/Numero1/Nombre2/Numero2/
y quiero separar hasta "/"
Muchas gracias

NoDo
09 de Febrero del 2006
Hola!
Para separar, puedes hacer uso del método split, que devuelve un vector de Strings:
Ejemplo:
String trozos[]=cadenaQueLeiste.split("/");
Y luego nad, a jugar con ello. Recorres el vector y bla bla...
Venga, un saludo.

beapsan
09 de Febrero del 2006
Muchas gracias, aunque.... tengo un problemilla, porque separo como me has dicho e intento copiar cada trocito en un hueco de la tabla y me sale un error. Este es mi código, por si veis en qué me estoy equivocando....

try{
input = new DataInputStream(new FileInputStream(
"agenda.txt"));
cadena= input.readLine();
String trozoscadena[]=cadena.split("/");
int i=0;
int j=0;
int k=0;
boolean resultado=trozoscadena[k].equals(null);
do
{
for(j=0;j<2;j++)
{
tabla1.setValueAt(trozoscadena[k],i,j);
k++;
}
i++;
resultado=trozoscadena[k].equals(null);
}while(resultado==false);

input.close();
}

Me dice que no encuentra trozoscadena.
Muchas gracias

Diego
09 de Febrero del 2006
Para contar el número de veces que aparece un carácter en una cadena:
String cadena=...
int apariciones=0;
for(int i=cadena.lengh();(i=cadena.lastIndexOf(i))>=0;)
apariciones++;
Para separar una cadena hasta un carácter, puedes utilizar el método indexOf y el substring así:
String cad="alberto/juan";
System.out.println(cad.substring(0,cad.indexOf(\'/\')));
Ojo, que si el carácter no está saltará una excepción. Si por el contrario quieres ver todas las cadenas separadas por '\', deberías utilizar java.util.StringTokenixer(cadena,"\") o el método split comentado anteriormente.

Diego
09 de Febrero del 2006
El código que he escrito antes es erróneo, un código que funciona es:
...
String cadena="abracadabra";
int apariciones=0;
for(int i=cadena.length();(i=cadena.lastIndexOf('a',i-1))>=0;)
apariciones++;
System.out.println(apariciones);
...
Espero que te sirva.

beapsan
09 de Febrero del 2006
Pero el problema es que si no aparece me da una excepción y entonces... la he liado claro. Jope!!!
Pero muchas gracias, lo seguiré intentado .... qué remedio! Si lo que quiero es separar los campos y escribirlos en una tabla... pero joe, qué chungo!