正则表达式在名字后找到中间的缩写

时间:2019-05-10 21:26:11

标签: c#-4.0

语言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之后的仅一个字符,但是会忽略仅以单个字符中间的首字母开头的任何内容吗?

0 个答案:

没有答案