首页 > 解决方案 > 正则表达式查找名字后的中间首字母

问题描述

语言 C#。在文本框的“离开”事件中,我使用正则表达式来尝试在名字和空格之后找到一个中间首字母。如果找到匹配项,我将在 FirstName 和 MI 的开头字符的 TitleCase 中添加句点“。” 中间首字母之后。否则,我只是 TitleCase 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);
    }
}

当最终用户在名字之后只输入一个字符时,这很好用,即 Mike E。但是,如果用户输入完整拼写的中间名,例如 Mike Edward,则在中间名之后输入一个句点,例如 '迈克·爱德华。

我还尝试了其他正则表达式语法,如下所示,来自 StackOverFlow 站点,如下所示。在 FirstName 中查找一个或多个字符,然后是一个或多个空格字符,然后是一个单词字符。但是,这又增加了一个句号“.”。在一个拼写出来的中间名之后。

正则表达式中间名首字母有或没有它

Match match = Regex.Match(FirstName.Text, @"\w+[a-zA-Z]\s+\w?[a-zA-Z]");

有人可以建议一种正则表达式语法,它只检查名字之后的单个字符,但会忽略任何比单个字符中间首字母更长的东西吗?

标签: c#-4.0

解决方案


推荐阅读