Eliminar la última palabra de un String en Java

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.


9 comentarios:

  1. 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....
    public 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");
    }
    }
    }

    ResponderEliminar
  2. Si pones s = ""; en la primera línea del método eliminarUltimaPalabra(), me parece que no funcionará.

    Gracias por el tutorial.

    ResponderEliminar
    Respuestas
    1. 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.

      Eliminar
    2. si funciona amigo, detalla un poco el codigo

      Eliminar
  3. Facil y sencillo para toda la familia

    import 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);
    }
    }

    ResponderEliminar
    Respuestas
    1. me iluminaste en un segundo amigo! gracias por tu ejemplo

      Eliminar
  4. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  5. yo lo resolvi de esta manera:

    public 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();
    }

    }

    ResponderEliminar
  6. como seria el cidigo de eliminar los numero repetidos de un numero de tipo INT, FLOAT ´
    y DOUBLE y invertir un numero de un numero de tipo INT, FLOAT ´
    y DOUBLE y invertir

    ResponderEliminar