如何在C#中使用Split()方法获取字符串的n部分?

如何在C#中使用Split()方法获取字符串的n部分?,c#,string,C#,String,我有stringstr=“Join Smith hate meat” 我想从这个str获取JoinSmith 我尝试了以下代码: private static string GetFirstWord(string str) { return str.Split(' ').Take(2).ToString(); } 这个代码对我不起作用 我试过:return str.Split('').FirstOrDefault它只得到字符串的第一部分Join一个奇特的组合: var result =

我有string
str=“Join Smith hate meat”

我想从这个
str
获取
JoinSmith

我尝试了以下代码:

private static string GetFirstWord(string str)
{
    return str.Split(' ').Take(2).ToString();
}
这个代码对我不起作用

我试过:
return str.Split('').FirstOrDefault
它只得到字符串的第一部分
Join
一个奇特的组合:

var result = string.Join(String.Empty, str.Split(' ').Take(2));
将前两个单词合并成一个字符串

或:

使用


有点不同

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;
    }
}
private IEnumerable TakeAllentilSecondSpace(字符串s)
{
var=false;
foreach(字符c在s中)
{
如果(c='')
{
如果(遇到)屈服断裂;
空格=真;
}否则收益率c;
}
}

因此,这不是用户之间的竞争。我认为这应该是答案之间的竞争。因此,搜索解决方案的人通过选择投票最多的答案获得最佳结果。在这种情况下,
string.Concat
应该用于
strign.Join
I投票支持你的答案。我认为@user3185569会在您的答案之前回复,并且会起作用。之后,他更新了答案。@VănLộ两个答案都有效
string.Concat()
是这种情况下更好的解决方案(性能和可读性)。把我的答案复制到他的答案里,我的答案就过时了。依我看,这不是应该怎么做的。
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;
    }
}