如何将字符串的第一部分和最后部分用空格分隔

时间:2011-12-25 11:39:31

标签: c# regex string linq string-split

如果我的名字由多个以空格分隔的部分组成,我想得到:

the first name + " " + the last name.

有没有办法做到这一点。

  • 除了用空格分隔的名称外没有规则。

  • 有任意数量的部件。

示例:

john depp lennon

要:

john lennon

3 个答案:

答案 0 :(得分:5)

string sString = "john depp lennon";
string[] sArray = sString.Split(' ');

string sStartEnd = sArray[0] + " " + sArray[sArray.Count()-1]; // "john lennon"

答案 1 :(得分:3)

由于您在标签中提到了LINQ,我会告诉您,跳过验证以输入一个部分(仅“Johm”)或完全不输入任何内容,这将是:

确保您拥有:

using System.Linq;

然后:

var nameParts = name.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
var fullName = string.Format("{0} {1}", nameParts.First(), nameParts.Last());

这将为幸福的道路做好工作


如果我们想检查边缘情况,我们可以添加额外的检查:

static string GetName(string nameEntry)
{
    // assuming .NET 4, or use string.IsNullOrEmpty(), 
    //    as we are protected later from white space-only text
    if(string.IsNullOrWhiteSpace(nameEntry))
        return string.Empty; // Or throw error. Your choice

    var nameParts = nameEntry.Split(new[] { ' ' }, 
                                        StringSplitOptions.RemoveEmptyEntries);
    if(!nameParts.Any()) return string.Empty(); // Or throw error. Your choice

    if(nameParts.Length == 1)
        return nameParts.First();

    var fullName = string.Format("{0} {1}", nameParts.First(), nameParts.Last());
    return fullName;
}

答案 2 :(得分:2)

string str = "john depp lennon";      
string[] data = str.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
string result = string.Format("{0} {1}", data.First(), data.Last());