正则表达式firstname.middlename.lastname拆分并删除中间名和"。"

时间:2013-02-21 16:14:14

标签: c# regex winforms textbox

我正在寻找一个将firstname.middlename.lastname拆分为以下内容的正则表达式:

第一个中期

然后删除整个中间名(包括名字和姓氏之间的句点)

我将此传递给文本框以向用户显示名字姓氏。

如果它有任何区别我会使用winforms。


感谢这个论坛上某些人的快速行动,这就是我解决方案的答案!:

        string strName =  Environment.UserName.ToString();
        strName = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(strName.ToLower());

        String shortName = Regex.Replace(strName, @"[.]\w*[.]", " ");

        uxCreator.SelectedText = shortName;

3 个答案:

答案 0 :(得分:4)

除非有一些迫切的理由使用正则表达式,否则我会选择更简单的方法:

String fullName = "Harry.Bob.McGraw";
String[] names = fullName.Split('.');
String shortName = String.Format("{0} {1}", names[0], names[2]);

这为您提供了shortName中的缩写名称。

另外,如果你真的必须有正则表达式,那么你可以使用

String fullName = "Harry.Bob.McGraw";
String shortName = Regex.Replace(fullName, @"[.]\w*[.]", " ");

答案 1 :(得分:1)

一些非常简单的事情(没有拆分)?

string input = "Harry.Bob.McGraw";
string pattern = @"(?<=\w+)\.\w+\.(?=\w+)";

var result = Regex.Replace( input, pattern, " " );

// result = "Harry McGraw"

您可以使用相同的表达式进行拆分:

var result = Regex.Split( input, pattern );

// result[0] = "Harry"
// result[1] = "McGraw"

注意:正则表达式与Matrin的基本没有区别。我已经包含了零宽度断言(也称为lookarounds),以防你想将它应用于更大的文本体。

答案 2 :(得分:0)

我不会使用RegEx。使用字符串操作函数更容易:

http://www.developerfusion.com/code/4398/string-manipulation-in-c/