Как мне получить второе имя из текстового поля?

#c#

#c#

Вопрос:

Итак, у меня есть текстовое поле, в котором пользователь вводит свое полное имя, если пользователь вводит имя, например, «Джон Уильям Натан Смит», как я могу получить только «Натан Смит». Это может быть «Джон Уильям Натан», и в данном случае мне нужно «Уильям». как мне его получить? я создал массив с именем name следующим образом:

        string fullname = txtFull.Text;
       string[] name = fullname.Split(null);

       txtFirst.Text = name.First();
       txtLast.Text = name.Last();
       txtMid.Text = name[1]   " "   name[(name.Length - 2)];        //textbox to output
  

Комментарии:

1. Вместо «Джон Уильям Натан Смит» вы хотите «Уильям Натан», верно?

2. Вам нужно добавить тест на наличие как минимум двух элементов в массиве name

3. Извлеките все слова из вашей операции разделения, за исключением первого и последнего слова и строки. соедините их вместе. Вам также должно быть легко определить, когда пользователь не вводил второе имя (например, указав только «Джон Смит» или просто «Смит» в качестве полного имени).

4. Пожалуйста, прочитайте shinesolutions.com/2018/01/08 /…

5. Я думаю, вы не сможете решить эту проблему, если сначала не решите проблему определения «фамилии». И если вы просто не разрешаете таким людям, как ван Гог, да Сильва или фон Нейман, использовать вашу систему, это само по себе является проблемой. Если вы хотите знать разные части имен людей, запрашивайте их явно.

Ответ №1:

Предположение: разные части имен людей всегда разделяются одним пробелом, а среднее имя определяется как все, что находится между первым и последним пробелом.

(обратите внимание, что это предположение не всегда верно, у людей могут быть самые разные имена)

Вы можете вызвать Skip and then Take , а затем объединить их вместе:

 string[] name = fullname.Split(' ');
string middleName = string.Join(" ", name.Skip(1).Take(name.Length - 2));