2016-07-14 4 views
2

Ich habe Zeichenfolge str = "Join Smith hate meat".Wie n Teil von String mit Split() Methode in C#?

Ich möchte JoinSmith von diesem str bekommen.

Ich habe versucht, den Code ein:

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

Dieser Code nicht für mich arbeiten.

Ich habe versucht: return str.Split(' ').FirstOrDefault es erhalten nur den ersten Teil der Zeichenfolge Join.

Antwort

1

A Fancy Kombination:

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

nimmt die ersten beiden Worte, tritt sie in einen String.

Oder:

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

Verwenden

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

SO ist kein Wettbewerb zwischen den Benutzern. Ich denke, es sollte ein Wettbewerb zwischen den Antworten sein. Damit jemand, der nach einer Lösung sucht, das Beste bekommt, indem er die Antwort mit den meisten Stimmen wählt. Und in diesem Fall sollte 'string.Concat' über' strign.Join' verwendet werden. Http://stackoverflow.com/a/12257751/1315444 – fubo

+0

Ich stimme deine Antwort ab. Ich denke @ user3185569 antworte vor deiner Antwort und es funktioniert. Danach wurde er die Antwort aktualisiert. – vanloc

+1

@ VănLộc beide Antworten funktionieren. 'string.Concat()' ist in diesem Fall die bessere Lösung (Leistung und Lesbarkeit). Indem ich meine Antwort in seine kopierte, wurde meine Antwort obsolet. Imo, so sollte es nicht gemacht werden. – fubo

1

Etwas ein wenig unterschiedlich

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

die Zeichen Ausbeute Sie wollen ... manchmal ist dies ein guter Weg, wenn Sie ein benötigen viel Kontrolle, die Standardmethoden nicht bieten.

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