¿Cuál es la forma más sencilla de obtener la última palabra de una cadena en Java? Usted puede asumir ninguna puntuación (sólo caracteres alfabéticos y espacios en blanco).

  • relacionados: stackoverflow.com/questions/1181969/…
  • Título dice «más rápido», pregunta pide «más simple». Por favor aclarar.
  • Más rápido y sencillo para la codificación y la lectura. El tiempo de ejecución es irrelevante. Como un aparte, teniendo diferentes redacción es mejor para los fines de la búsqueda a pesar de la discrepancia que no fue intencional.
InformationsquelleAutor Muhd | 2011-01-12

6 Comentarios

  1. 147
    String test =  "This is a sentence";
    String lastWord = test.substring(test.lastIndexOf(" ")+1);
    • Necesita un +1 y se produce un error en una sola palabra.
    • Una línea es agradable ya que voy a usar en la Velocidad de código de la plantilla. Puede ser combinado con un regular expession para dar cuenta de otros personajes como JST la solución.
    • En realidad, esto es mejor, que ya cuenta con una sola palabra: String lastWord = prueba.substring(de prueba.lastIndexOf(» «)+1);
    • ¿qué pasa si una oración tiene algunos signos de puntuación al final? «Esta es una oración?!»
  2. 20
    String testString = "This is a sentence";
    String[] parts = testString.split(" ");
    String lastWord = parts[parts.length - 1];
    System.out.println(lastWord); //"sentence"
    • Esta es la solución, probablemente me habría venido para arriba con en el mío propio, no está mal, pero un one-liner sería mejor.
    • Cuando usted dice «más rápido», ¿te refieres a la menor en el código o el más rápido para ejecutar? Esto podría ser hecho en una funda, pero no ejecutar más rápido y sería mucho más difícil de leer.
    • No he dicho «más rápido», me dijo «más simple», por lo que yo quería decir una combinación de la brevedad y facilidad de comprensión.
    • Título de tu tema dice más rápido
    • Punto justo. Yo estaba pensando más rápida de código/leer.
    • Si fuera yo, yo creo que el de arriba es el más fácil de leer. Entonces de nuevo, esta es también la solución que se me vino inmediatamente con. @OscarRyz la solución también es sencilla de leer, por lo que se reduce a la preferencia personal.
    • Probablemente la mía, no es fácil de leer ya que he añadido una comprobación en caso de que la cadena en sí es la última palabra.
    • Sí, ahora Dave es más fácil de leer, a pesar de que uno puede curar duro para leer el código con un breve comentario.
    • Umm partes.longitud() no deben tener entre paréntesis.
    • Tienes razón, gracias!

  3. 11

    Si otros caracteres de espacios en blanco son posibles, entonces usted quiere:

    testString.split("\s+");
  4. 11

    Aquí es una forma de hacerlo es utilizando String‘integrado en las regex capacidades:

    String lastWord = sentence.replaceAll("^.*?(\w+)\W*$", "$1");

    La idea es para que coincida con la totalidad de la cadena de ^ a $, la captura de la última secuencia de \w+ en un grupo de captura 1, y reemplazar la frase entera con él mediante $1.

    Demo.

    • Este es de oro sólido
    • Limpio, porque es un forro
  5. 5

    Usted puede hacer eso con StringUtils (de Apache Commons Lang). Se evita el índice de magia, así que es más fácil de entender. Por desgracia substringAfterLast devuelve cadena vacía cuando no hay ningún separador en la cadena de entrada así que tenemos la if declaración para ese caso.

    public static String getLastWord(String input) {
        String wordSeparator = " ";
        boolean inputIsOnlyOneWord = !StringUtils.contains(input, wordSeparator);
        if (inputIsOnlyOneWord) {
            return input;
        }
        return StringUtils.substringAfterLast(input, wordSeparator);
    }
  6. 2

    Obtener la última palabra en Kotlin:

    String.substringAfterLast(" ")
    • Upvoted clara y concisa de la solución.

Dejar respuesta

Please enter your comment!
Please enter your name here