2012-07-23 16 views
20

Tengo una cadena de "Palabra mágica". Necesito recortar la cuerda para extraer "Magic" solamente. Estoy haciendo el siguiente código.Recortar una cadena en java para obtener la primera palabra

String sentence = "Magic Word"; 
String[] words = sentence.split(" "); 

for (String word : words) 
{ 
    System.out.println(word); 
} 

Necesito solo la primera palabra. ¿Hay algún otro método para recortar una cadena para obtener la primera palabra solo si se produce space?

+10

cadena FirstWord = sentence.split (" ") [0]; ?? – Syam

+0

duplicado de https://stackoverflow.com/questions/5067942/what-is-the-best-way-to-extract-the-first-word-from-a-string-in-java – AsfK

Respuesta

48
String firstWord = "Magic Word"; 
    if(firstWord.contains(" ")){ 
     firstWord= firstWord.substring(0, firstWord.indexOf(" ")); 
     System.out.println(firstWord); 
    } 
7

Usted podría utilizar String 's replaceAll() método que toma una expresión regular como entrada, para reemplazar todo después de que el espacio incluyendo el espacio, si un espacio existe de hecho, con la cadena vacía:

String firstWord = sentence.replaceAll(" .*", ""); 
2

una solución sucia:

sentence.replaceFirst("\\s*(\\w+).*", "$1") 

Esto tiene el potencial de devolver la cadena original si hay coincidencia, por lo que sólo tiene que añadir una condición:

if (sentence.matches("\\s*(\\w+).*", "$1")) 
    output = sentence.replaceFirst("\\s*(\\w+).*", "$1") 

O puede usar una solución más limpia:

String parts[] = sentence.trim().split("\\s+"); 
if (parts.length > 0) 
    output = parts[0]; 

Las dos soluciones anteriores hace suposiciones sobre el primer carácter que no sea espacio en la cadena es la palabra, lo que podría no ser cierto si la cadena comienza con signos de puntuación

Para hacerse cargo de eso:

String parts[] = sentence.trim().replaceAll("[^\\w ]", "").split("\\s+"); 
if (parts.length > 0) 
    output = parts[0]; 
+0

Esta respuesta no ha sido probada. Publique un comentario si de alguna manera está mal. – nhahtdh

5

modificar la respuesta anterior.

String firstWord = null; 
if(string.contains(" ")){ 
firstWord= string.substring(0, string.indexOf(" ")); 
} 
else{ 
    firstWord = string; 
} 
0

Puede intentar this->

String newString = "Magic Word"; 
    int index = newString.indexOf(" "); 
    String firstString = newString.substring(0, index); 
    System.out.println("firstString = "+firstString); 
+0

ver http://stackoverflow.com/questions/5067942/what-is-the-best-way-to-extract-the-first-word-from-a-string-in-java#35345069 – GKislin

3

Esta debe ser la forma más fácil.

public String firstWord(String string) 
{ 
return (string+" ").split(" ")[0]; //add " " to string to be sure there is something to split 
} 
3
String input = "This is a line of text"; 

    int i = input.indexOf(" "); // 4 

    String word = input.substring(0, i); // from 0 to 3 

    String rest = input.substring(i+1); // after the space to the rest of the line 
Cuestiones relacionadas