2011-12-25 16 views

回答

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

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

這取決於你想返回,如果只有一個名字..像什麼「波諾..這將retrun‘波諾波諾’..還有,我只是用sArray.Length-1 – 2011-12-25 11:58:05

+0

唯一的問題複合名稱!!!!它以最後一部分作爲姓。 – 2011-12-25 15:32:16

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

如果字符串不完全具有3個部分,則這不起作用。 – svick 2011-12-25 11:59:23

+0

@svick可能是你錯過了,他說沒有規矩,任何方式更新我的答案,謝謝:) – 2011-12-25 12:02:03

+1

我認爲「無規則」並不意味着「結果可能是什麼」,但像「輸入可以是任何東西」 。 – svick 2011-12-25 12:07:05

3

既然你在標籤中提到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; 
} 
相關問題