Método Java para quitar la última palabra de un String.
Vamos
a escribir un método que reciba un String que contiene una frase. El
método eliminará la última palabra y devuelve un String con la
frase modificada.
La
forma de resolverlo es la siguiente: se busca el último espacio en
blanco del texto mediante el método lastIndexOf. Este método
devuelve la posición del último espacio en blanco. Si lastIndexOf
devuelve -1 significa que no lo ha encontrado lo que quiere decir que
la frase solo tiene una palabra o está vacía. En ese caso se
devuelve una cadena vacía.
Si
se encuentra el último espacio en blanco, se obtiene un nuevo String
mediante el método substring desde la primera posición del texto
hasta donde se encuentra el último espacio.
Para
que esto funcione correctamente debemos asegurarnos de que el texto
no contiene espacios en blanco al final ya que si fuese así no
encontraríamos la última palabra con este método. Para eso se
utiliza el método trim() que elimina posibles espacios en blanco al
principio y al final del String.
public static String eliminarUltimaPalabra(String s) {
int pos;
s = s.trim();
pos = s.lastIndexOf(" ");
if (pos != -1) {
s = s.substring(0, pos);
} else {
s = "";
}
return s;
}
Un
método main para probarlo podría ser este:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String texto;
do {
System.out.println("Introduce texto: ");
texto = sc.nextLine();
} while (texto.isEmpty());
texto = eliminarUltimaPalabra(texto);
System.out.println(texto);
}
Se
pide por teclado un texto, mediante el método isEmpty() se obliga a
que el texto no esté vacío aunque esto no es necesario. Después se
envía el String que contiene el texto al método para que elimine la
última palabra y finalmete se muestra el String modificado.
aqui busco la posicion del ultimo espacio y creo la nueva frase hasta la posicion del espacio vacio... este es un metodo mas sencillo segun mi parecer....
ResponderEliminarpublic class ExampleThree {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String Frase;
int pos = 0;
String Palabra="";
System.out.println("INGRESE LA FRASE:");
Frase=sc.nextLine();
Frase=Frase.trim();
for (int i = 0; i < Frase.length(); i++) {
if(Frase.substring(i, i+1).equals(" ")){
pos=i;
}
}
if(pos>0){
for (int i = 0; i < pos; i++) {
Palabra = Palabra + Frase.substring(i, i+1);
}
System.out.println("LA FRASE NUEVA ES: ");
System.out.println(Palabra);
}else{
System.out.println("LA FRASE ESTA VACIA");
}
}
}
Si pones s = ""; en la primera línea del método eliminarUltimaPalabra(), me parece que no funcionará.
ResponderEliminarGracias por el tutorial.
Tienes razón Dibose, esa instrucción que aparecía ahí hace que perdamos el contenido original de la frase. Gracias por avisar del error, ya lo he corregido en la entrada. Saludos.
Eliminarsi funciona amigo, detalla un poco el codigo
EliminarFacil y sencillo para toda la familia
ResponderEliminarimport java.util.*;
public class Program
{
public static void main(String[] args) {
Scanner entrada=new Scanner(System.in);
String frase = entrada.nextLine();
frase=frase.trim();
int posicion=0;
for(int i=0; i<frase.length(); i++){
if(frase.charAt(i)==' '){
posicion=i;
}
}
frase=frase.substring(0,posicion);
System.out.println(frase);
}
}
me iluminaste en un segundo amigo! gracias por tu ejemplo
EliminarEste comentario ha sido eliminado por el autor.
ResponderEliminaryo lo resolvi de esta manera:
ResponderEliminarpublic void EliminarUltimaPalabra(){
Scanner sn = new Scanner(System.in);
String texto;
do{
System.out.println("Ingresa una frase");
texto= sn.nextLine();
}while (texto.isEmpty());
StringTokenizer palabras = new StringTokenizer(texto, " ", true);
while (palabras.countTokens()>1){
System.out.print(palabras.nextToken());
palabras.countTokens();
}
}
como seria el cidigo de eliminar los numero repetidos de un numero de tipo INT, FLOAT ´
ResponderEliminary DOUBLE y invertir un numero de un numero de tipo INT, FLOAT ´
y DOUBLE y invertir