0

winform内のテキストボックスからユーザー入力をcsvとして取得し、それらを文字列配列に入れ、その配列を繰り返し処理して、姓と名を持つオブジェクトを作成します。

if(txtAuthors.Text != string.Empty)
{
   if(txtAuthors.Text.Contains(","))
   {
      if (authorsInput.Count() > 0)
      {
         foreach (string name in authorsInput)
         {
            name.TrimStart(); 
            string[] firstAndLastName = name.Split(' ');
            string fname = firstAndLastName[0];
            string lname = firstAndLastName[1];
         }
      }    
   }
}

問題は、最初のコンマの前に最初の著者のみが追加され (fname と lname)、その他は姓のみです。ご覧のとおり、名前をトリムして配列メンバーから空白を削除しようとしましたが、問題は同じです。

ここで何が間違っていますか?

更新:これは動作するようになりました

string[] firstAndLastName = name.TrimStart().Split(' ');

しかし、なぜこれが機能しないのかはまだわかりません

name.TrimStart();
string[] firstAndLastName = name.Split(' ');
4

2 に答える 2

2

Trim() を使用して、
「fname = fname.Trim();」の前後の空白をすべてカットできます。

于 2013-10-20T08:45:43.700 に答える
2

文字列は不変オブジェクトであるため、呼び出しを行っても最初の空白のないname.TrimStart()変数にはなりません。 文字列をその場で変更することはできません。操作の結果を常に新しい文字列に割り当てる必要があります。name

2番目のオプションは次のように機能します:

string newname = name.TrimStart();
string[] firstAndLastName = newname.Split(' ');

また、TrimStart の結果に新しい変数を使用していることにも注意してください。これは、foreach ループ内で行う場合に必要です。foreach iteration variable

于 2013-10-20T08:52:56.770 に答える