2011-08-15 37 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); 
     } 
相关问题