2011-08-15 35 views
0

我已經能夠分割名字和姓氏。但是我遇到的問題是,如果有人決定輸入中間名或中間名?任何人都知道我該如何去做這件事?將文本輸入到另一個表格的標籤中分割文本

這裏是我的代碼至今:

//Name Split 
var fullname = strTextBox; 
var names = fullname.Split(' ');   
label3.Text = names[0]; 
label5.Text = names[1] + " " + names[2];

此代碼的工作,如果在中間初始的人的類型和姓氏。但是用戶只輸入姓氏和名字,names[2]給我錯誤,因爲它找不到另一個分區。

我會說,我花了至少10個小時試圖找出一個有條件的工作,但還沒有得到它。

這裏是許多條件語句我曾嘗試之一:

//Name Split 
var fullname = strTextBox; 
var names = fullname.Split(' '); 
if (fullname.Contains (> 1 (' ')) 
{ 
    label3.Text = names[0]; // first 
    label5.Text = names[1] + " " + names[2]; // middle initial 
} 
else 
{ 
    label3.Text = names[0]; 
    label5.Text = names[1]; 
}

回答

1

個人而言,我會爲每個數據塊我要收集一個單獨的文本框中去。

主要原因是您無法準確預測用戶將要進入「全名」文本框的內容。有太多的變化。

考慮:

Jamie Dixon 
Jamie O Dixon 
Dixon, Jamie O 
Dixon, Jamie 
Jamie O P J Dixon 

雖然有組合的數量有限,你真的不能預測什麼是多少以及以什麼順序,用戶將進入細節。

+0

和'迪克遜,Jamie'沒有空間將打破這一切:) – Matten

+0

.....沒錯:) –

1

這不是一個很好的解決方案,你得到了什麼,將其分解成兩個文本框,但如果你想這應該帶來預期的效果:

var fullname = strTextBox; 
var names = fullname.Split(' '); 

if(names.Count()<2) 
{ 
    // throw an error here, because user did not enter first + lastname 
} 

label3.Text = names[0]; 
label5.Text = (names.Count() > 2 ? names[1] + " " + names[2] : names[1]); 
+0

但要記住,傑米解釋說:fullname'的'其他的解釋會打破它,一個名字像'馮馮Staufenberg'在哪裏'馮Staufenberg'是最後一個名字,哦...... – Matten

0

試試這個:

label5.Text = string.Format("{0} {1}", (names.Length == 2 ? "" : names[1]), 
       names.Last()).Trim(); 
0

嘗試這個。這將有助於你最後的任何名字。

 //string fullname = ""; 
     //string fullname = "first"; 
     //string fullname = "first last"; 
     string fullname = "first middle last"; 
     //string fullname = "first middle last extra-last"; 
     string[] names = fullname.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); 

     if (names.Length > 0) 
     { 
      string firstName = names[0]; 
      string lastNameWithInitial = string.Join(" ", names, 1, names.Length - 1); 
     } 
相關問題