2011-08-15 7 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

それは2つのテキストボックスにそれを分割しますが、あなたがしたい場合、これは所望の効果を持参してください、あなたが得たものの素敵な解決策ではありません。

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''の他の解釈はそれを破るだろう、と名前'フォン・シュタウフェンベルク'が姓である「ヘンリー・フォン・シュタウフェンベルク」のように、オハイ... – 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); 
     } 
関連する問題