¿Cuál es la mejor forma de extraer la primera palabra de una cadena en Java?

Tratando de escribir un método corto para poder analizar una cadena y extraer la primera palabra. He estado buscando la mejor manera de hacer esto.

Supongo que usaría str.split(",") ; sin embargo, me gustaría obtener solo la primera primera palabra de una cadena, y guardar eso en una variable, y poner el rest de las fichas en otra variable.

¿Hay una forma concisa de hacer esto?

El segundo parámetro del método de split es opcional, y si se especifica dividirá la cadena de destino solo N veces.

Por ejemplo:

 String mystring = "the quick brown fox"; String arr[] = mystring.split(" ", 2); String firstWord = arr[0]; //the String theRest = arr[1]; //quick brown fox 

Alternativamente, puede usar el método de substring de String .

Deberías estar haciendo esto

 String input = "hello world, this is a line of text"; int i = input.indexOf(' '); String word = input.substring(0, i); String rest = input.substring(i); 

Lo anterior es la manera más rápida de hacer esta tarea.

Para simplificar lo anterior:

 text.substring(0, text.indexOf(' ')); 

Aquí hay una función lista:

  private String getFirstWord(String text) { int index = text.indexOf(' '); if (index > -1) { // Check if there is more than one word. return text.substring(0, index); // Extract first word. } else { return text; // Text is the first word itself. } } 

El simple que solía hacer es

 str.contains(" ") ? str.split(" ")[0] : str 

Donde str es tu cadena o texto bla bla :). Entonces, si

  1. str tiene un valor vacío, vuelve tal como es.
  2. str tiene una palabra, vuelve tal como es.
  3. str es varias palabras, extrae la primera palabra y regresa.

Espero que esto sea útil.

Puede usar String.split con un límite de 2.

  String s = "Hello World, I'm the rest."; String[] result = s.split(" ", 2); String first = result[0]; String rest = result[1]; System.out.println("First: " + first); System.out.println("Rest: " + rest); // prints => // First: Hello // Rest: World, I'm the rest. 
  • Docs de la API para: split

Podría usar un escáner

http://download.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html

El escáner también puede usar delimitadores que no sean espacios en blanco. Este ejemplo lee varios elementos de una cadena:

  String input = "1 fish 2 fish red fish blue fish"; Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*"); System.out.println(s.nextInt()); System.out.println(s.nextInt()); System.out.println(s.next()); System.out.println(s.next()); s.close(); 

imprime el siguiente resultado:

  1 2 red blue 
 import org.apache.commons.lang3.StringUtils; ... StringUtils.substringBefore("Grigory Kislin", " ") 

Me gusta esto:

 final String str = "This is a long sentence"; final String[] arr = str.split(" ", 2); System.out.println(Arrays.toString(arr)); 

arr[0] es la primera palabra, arr[1] es el rest

Sé que esta pregunta ya ha sido respondida, pero tengo otra solución (para aquellos que todavía están buscando respuestas) que puede caber en una línea: usa la funcionalidad dividida, pero solo le da la primera entidad.

 String test = "123_456"; String value = test.split("_")[0]; System.out.println(value); 

La salida mostrará:

 123 
 String anotherPalindrome = "Niagara. O roar again!"; String roar = anotherPalindrome.substring(11, 15); 

También puedes hacer como estos