30

文字列「魔法の言葉」があります。「Magic」のみを抽出するには、文字列をトリミングする必要があります。次のコードを実行しています。

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 に答える
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];

上記の 2 つの解決策では、文字列内のスペースではない最初の文字が単語であると仮定していますが、文字列が句読点で始まる場合、これは当てはまらない可能性があります。

それを処理するには:

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 に答える