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