如何获得第一,并用空格分隔字符串的最后一个部分
问题描述:
如果我有一个名称由用空格隔开一个以上的部分,我想:如何获得第一,并用空格分隔字符串的最后一个部分
the first name + " " + the last name.
有什么方法来做到这一点。
没有规则,除了空格分隔的名称。
有任何数量的部件。
例子:
john depp lennon
要:
john lennon
答
string sString = "john depp lennon";
string[] sArray = sString.Split(' ');
string sStartEnd = sArray[0] + " " + sArray[sArray.Count()-1]; // "john lennon"
答
string str = "john depp lennon";
string[] data = str.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
string result = string.Format("{0} {1}", data.First(), data.Last());
答
既然你在标签中提到LINQ,我给你的是,进入跳过验证一部分(只有“Johm”)或者什么也不输入,那将是:
确保您有:
using System.Linq;
然后:
var nameParts = name.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
var fullName = string.Format("{0} {1}", nameParts.First(), nameParts.Last());
Thise将为快乐路径做的工作
如果我们要检查边缘的情况下,我们可以添加额外的检查:
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;
}
这取决于你想返回,如果只有一个名字..像什么“波诺..这将retrun‘波诺波诺’..还有,我只是用sArray.Length-1 – 2011-12-25 11:58:05
唯一的问题复合名称!!!!它以最后一部分作为姓。 – 2011-12-25 15:32:16