30

我有一个字符串“魔术词”。我需要修剪字符串以仅提取“魔术”。我正在执行以下代码。

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

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

我只需要第一个字。是否有任何其他方法可以修剪字符串以仅在space发生时才获得第一个单词?

4

8 回答 8

67
  String firstWord = "Magic Word";
     if(firstWord.contains(" ")){
        firstWord= firstWord.substring(0, firstWord.indexOf(" ")); 
        System.out.println(firstWord);
     }
于 2012-07-23T06:35:47.127 回答
10

您可以使用以正则表达式作为输入String的 'replaceAll()方法,将空格之后的所有内容(包括空格)替换为空字符串(如果确实存在空格):

String firstWord = sentence.replaceAll(" .*", "");
于 2012-07-23T06:36:07.033 回答
9

这应该是最简单的方法。

public String firstWord(String string)
{
return (string+" ").split(" ")[0]; //add " " to string to be sure there is something to split
}
于 2014-06-12T18:13:55.457 回答
6

修改之前的答案。

String firstWord = null;
if(string.contains(" ")){
firstWord= string.substring(0, string.indexOf(" ")); 
}
else{
   firstWord = string;
}
于 2012-07-23T06:49:08.970 回答
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
于 2014-11-02T03:42:00.547 回答
2

一个肮脏的解决方案:

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

如果不匹配,这有可能返回原始字符串,所以只需添加一个条件:

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

或者您可以使用更清洁的解决方案:

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

上面的两个解决方案假设字符串中第一个不是空格的字符是单词,如果字符串以标点符号开头,这可能不是真的。

要解决这个问题:

String parts[] = sentence.trim().replaceAll("[^\\w ]", "").split("\\s+");
if (parts.length > 0)
    output = parts[0];
于 2012-07-23T06:39:04.113 回答
0

你可以试试这个->

  String newString = "Magic Word";
  int index = newString.indexOf(" ");
  String firstString = newString.substring(0, index);
  System.out.println("firstString = "+firstString);
于 2012-07-23T06:54:55.013 回答
0

我们永远不应该让简单的事情变得更复杂。编程就是让复杂的事情变得简单。

string.split(" ")[0]; //第一个词。

于 2019-03-05T14:02:57.280 回答