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没有初始空格的变量,因为字符串是不可变对象
您不能就地修改字符串。您总是需要将操作的结果分配给一个新字符串。

您的第二个选项有效,因为它就像:

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

另外,请注意我为 TrimStart 的结果使用了一个新变量。如果您在 foreach 循环内执行此操作,则这是必需的,因为不允许更改foreach iteration variable

于 2013-10-20T08:52:56.770 回答