从Java中的string中提取第一个单词的最佳方法是什么?

试图写一个简短的方法,以便我可以parsing一个string并提取第一个单词。 我一直在寻找最好的方式来做到这一点。

我假设我会使用str.split(",") ,但是我想抓住一个string中的第一个单词,并将其保存在一个variables中,然后将其他variables放入另一个variables中。

有没有一个简洁的方法来做到这一点?

split方法的第二个参数是可选的,如果指定的话只会将目标string拆分N次。

例如:

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

或者,你可以使用String的substring方法。

你应该这样做

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

以上是做这个任务的最快方法。

为了简化以上:

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

这是一个准备好的function:

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

您可以使用限制为2的String.split

  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. 
  • API文档: split

我以前做的简单的是

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

哪里str是你的string或文本bla bla :)。 所以, 如果

  1. str是空值,它返回原样。
  2. str有一个单词,它会返回原样。
  3. str是多个单词,它提取第一个单词并返回。

希望这是有帮助的。

你可以使用扫描仪

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

扫描仪也可以使用除空格之外的分隔符。 这个例子从一个string中读取几个项目:

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

打印以下输出:

  1 2 red blue 

喜欢这个:

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

arr[0]是第一个单词,其余的是arr[1]

 import org.apache.commons.lang3.StringUtils; ... StringUtils.substringBefore("Grigory Kislin", " ") 
 String anotherPalindrome = "Niagara. O roar again!"; String roar = anotherPalindrome.substring(11, 15); 

你也可以这样做