Многие программы управления контактами делают это - вы вводите имя (например, "John W. Smith" ), и оно автоматически разбивает его внутри:
Имя: Джон
Отчество: W.
Фамилия: Смит
Аналогично, он определяет такие вещи, как "Миссис Джейн У. Смит" и "Доктор Джон Доу-младший" (при условии, что вы допускаете такие поля, как "префикс" и "суффикс" в именах).
Я предполагаю, что это довольно распространенные вещи, которые люди хотели бы сделать... так что вопрос... как бы вы это сделали? Есть ли простой алгоритм для этого? Может быть, регулярное выражение?
Я после .NET-решения, но я не придирчив.
Обновление: Я ценю, что для этого нет простого решения, которое охватывает ВСЕ крайние случаи и культуры... но позвольте сказать, ради аргумента, что вам нужно имя в кусках (заполнение формы - как, например, в налоговых или других государственных формах - это один случай, когда вы обязаны вводить имя в фиксированные поля, нравится вам это или нет), но вы не обязательно хотите заставить пользователя вводить их имя в дискретные поля (меньше ввода = проще для начинающих пользователей).
Вы хотели бы, чтобы программа "угадывала" (насколько это возможно) на том, что первое, среднее, последнее и т.д. Если можно, посмотрите, как Microsoft Outlook делает это для контактов - он позволяет вам вводить имя, но если вам нужно уточнить, есть дополнительное маленькое окно, которое вы можете открыть. Я бы сделал то же самое - дайте пользователю окно, если они захотят ввести имя в отдельные части, - но разрешите вводить имя в одном поле и делать "лучшее предположение", которое охватывает наиболее распространенные имена.