Язык C #.В событии 'Leave' текстового поля я использую Regex, чтобы попытаться найти один средний инициал после FirstName и пробела.Если совпадение найдено, тогда я называю TitleCase начальным символом FirstName и MI и добавляю точку "."после среднего начального.В противном случае я просто использую TitleCase the FirstName.
Ниже показан фрагмент моего кода:
private void FirstName_Leave(object sender, EventArgs e)
{
//Regex looks for a single letter following first name, i.e.
//middle initial, and adds a '.' period after the letter.
Match match = Regex.Match(FirstName.Text, @"\w+\s[a-zA-Z]");
if (match.Success)
{
FirstName.Text = ReturnTitleCase(FirstName.Text + ".");
}
else
{
FirstName.Text = ReturnTitleCase(FirstName.Text);
}
}
Это прекрасно работает, когда конечный пользователь вводит только один символ после FirstName, т.е., Майк Э. Однако, если пользователь вводит полностью прописанное отчество, такое как Майк Эдвард, то после второго имени вводится точка, например, «Майк Эдвард».
Я также пробовал использовать другой синтаксис Regex.например, с сайта StackOverFlow, показанного ниже. ищите один или несколько символов в FirstName, затем один или несколько символов пробела, за которыми следует только один символ слова.Однако это снова добавляет точку "."после прописного отчества.
отчество regex, начальное с или без него
Match match = Regex.Match(FirstName.Text, @"\w+[a-zA-Z]\s+\w?[a-zA-Z]");
Может ли кто-нибудь предложить синтаксис Regex, который проверяет наличие Только один символ после FirstName, но будет игнорировать что-либо более длинное, чем просто начальная буква среднего символа?