2016-07-14 5 views
2

私は文字列str = "Join Smith hate meat"を持っています。C#でSplit()メソッドを使用してStringのnの部分を取る方法は?

JoinSmithstrから取得します。

私はコードを試してみました:

private static string GetFirstWord(string str) 
{ 
    return str.Split(' ').Take(2).ToString(); 
} 

このコードは、私のために働いていません。

私は試しました:return str.Split(' ').FirstOrDefaultそれは文字列Joinの最初の部分だけを取得します。

答えて

1

Aファンシー組み合わせ:

var result = string.Join(String.Empty, str.Split(' ').Take(2)); 

は、最初の二つの言葉を受け取り、1つの文字列にそれらを結合します。

または:

var result = string.Concat(str.Split(' ').Take(2)); 
5

使用

string result = string.Concat(str.Split(' ').Take(2)); // "JoinSmith" 
+2

SOは、ユーザー間の競争ではありません。私はそれが答えの間の競争でなければならないと思う。解決策を探している人が、最も多くの票を持つ答えを選ぶことによって最高のものになるようにします。そして、この場合、 'string.Concat'は' strign.Join'よりも使用されるべきです。http://stackoverflow.com/a/12257751/1315444 – fubo

+0

私はあなたの答えをアップにします。私はあなたの答えの前に@ user3185569の返信とそれが働いていると思います。その後、彼は答えを更新しました。 – vanloc

+1

@VănLộc両方の答えが働いています。 'string.Concat()'はこの場合のより良い解決策です(パフォーマンスと可読性)。私の答えを彼にコピーすることによって、私の答えは時代遅れになった。それはどうやってやるべきかではありません。 – fubo

1

少し違う何か

var result = new string(TakeAllUntilSecondSpace(str).ToArray()); 

したい文字を収量はあなたが必要な場合は...時々、これは良い方法です標準的な方法が提供しない多くの制御。

private IEnumerable<char> TakeAllUntilSecondSpace(string s) 
{ 
    var spaceEncountered = false; 
    foreach (char c in s) 
    { 
     if (c == ' ') 
     { 
      if (spaceEncountered) yield break; 
      spaceEncountered = true; 
     } else yield return c; 
    } 
} 
関連する問題