语言C#。在文本框的“离开”事件中,我正在使用Regex尝试在名字和空格之后查找单个中间名缩写。如果找到匹配项,则我将TitleCase用作FirstName和MI的开头字符,并添加句点“”。在中间首字母之后。否则,我只是在TitleCase中输入名字。
我在下面显示我的代码的一部分:
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);
}
}
当最终用户仅在名字之后输入单个字符(即Mike E)时,此方法就可以正常工作。 但是,如果用户输入了完整的拼写中间名(例如Mike Edward),则会在中间名之后输入一个句点,例如“ Mike Edward”。
我还在下面所示的StackOverFlow网站上尝试了其他正则表达式语法,如下所示:在FirstName中查找一个或多个字符,然后查找一个或多个空格字符,然后是单个单词字符。但是,这再次添加了句点“。”拼写出中间名之后。
regex middle name initial with or without it there
Match match = Regex.Match(FirstName.Text, @"\w+[a-zA-Z]\s+\w?[a-zA-Z]");
有人可以建议使用Regex语法来检查FirstName之后的仅一个字符,但是会忽略仅以单个字符中间的首字母开头的任何内容吗?