在java中修剪一个字符串以获得第一个单词

时间:2012-07-23 06:34:55

标签: java

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

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

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

我只需要第一个字。 有没有其他方法可以在space出现时修剪字符串以获取第一个字?

8 个答案:

答案 0 :(得分:56)

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

答案 1 :(得分:9)

你可以使用String的{​​{3}}方法将正则表达式作为输入,用空字符串替换包含空格的空格之后的所有内容(如果确实存在空格): / p>

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

答案 2 :(得分:8)

这应该是最简单的方法。

public String firstWord(String string)
{
return (string+" ").split(" ")[0]; //add " " to string to be sure there is something to split
}

答案 3 :(得分:6)

修改以前的答案。

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

答案 4 :(得分: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

答案 5 :(得分: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];

答案 6 :(得分:0)

你可以尝试这个 - >

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

答案 7 :(得分:0)

我们绝不应使简单的事情变得更加复杂。编程是要使复杂的事情变得简单。

string.split(“”)[0]; //第一个字。