Quitar el ultimo token de un String
En un pequeño proyecto que tengo me surgió la necesidad de quitar el ultimo token de una frase por ejemplo: " dame el id de cindy" el resultado seria "dame el id de", también quita los espacios en blanco inicesarios.
public String quitaTokenFinal(String texto) {
java.util.StringTokenizer tokens = new java.util.StringTokenizer(texto);
int n = 0;
String buff = "";
while (tokens.hasMoreTokens()) {
buff = tokens.nextToken();
}
java.util.StringTokenizer tokens = new java.util.StringTokenizer(texto);
int n = 0;
String buff = "";
while (tokens.hasMoreTokens()) {
buff = tokens.nextToken();
}
n = texto.length() - buff.length();
StringBuffer sb = new StringBuffer(texto);
sb.delete(n, texto.length());
texto = sb.toString();
return texto;
}
Segunda versión:
gracias a: ezamudio
public String quitaTokenFinal(String texto) {
java.util.StringTokenizer tokens = new java.util.StringTokenizer(texto);
String buff = "";
while (tokens.hasMoreTokens()) {
buff = tokens.nextToken();
}
int n = texto.length() - buff.length();
StringBuilder sb = new StringBuilder(texto);
sb.delete(n, texto.length());
return sb.toString();
}
java.util.StringTokenizer tokens = new java.util.StringTokenizer(texto);
String buff = "";
while (tokens.hasMoreTokens()) {
buff = tokens.nextToken();
}
int n = texto.length() - buff.length();
StringBuilder sb = new StringBuilder(texto);
sb.delete(n, texto.length());
return sb.toString();
}
- rodrigo salado anaya's blog
- Inicie sesión o regístrese para enviar comentarios
Comentarios
Quitar espacios en blaco inecesarios de un String.
para quitar los espacios de mas en un String uso esto.
java.util.StringTokenizer tokens = new java.util.StringTokenizer(texto);
texto = "";
while(tokens.hasMoreTokens()){
texto += " "+tokens.nextToken();
}
texto = texto.trim();
return texto;
}
StringBuilder
En este caso te conviene usar StringBuilder en vez de StringBuffer, ya que lo usas sólo dentro del método y por lo tanto no tienes problemas de concurrencia.
Sin embargo no entendí para qué lo usas; al final no lo conviertes a String ni haces nada con ese objeto; si quitas esas dos lineas no pasa nada.
gracias.
cierto. me falto toString. y gracias por la sugerencia, deja me la investigo.
Versión más eficiente
Como ejercicios son interesantes, pero no sería mucho más eficiente hacer esto?
String x = cadena.trim();
int espacio = x.lastIndexOf(' ');
if (espacio > 0) {
return x.substring(0, espacio);
} else {
return x;
}
ayuda
me podrias ayudar tengo que realizar un proyecto que identifique las palabras de un programa como ejemplo:
si el programa (lectura)contiene la palabra Import hay que hacer una lista que identifique la palabra import y que de su significado
Aplica el dos poruno, toma
Aplica el dos poruno, toma dos espacios y cambialospor uno!