0

我正在寻找一个将 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;
4

3 回答 3

4

除非有使用 Regex 的迫切理由,否则我会选择更简单的方法:

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*[.]", " ");
于 2013-02-21T16:21:00.793 回答
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 的基本没有区别。我已经包含了零宽度断言(又名环视),以防您想将其应用于更大的文本主体。

于 2013-02-21T16:33:02.337 回答
0

I wouldn't use a RegEx. It's easier to use the string manipulation functions:

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

于 2013-02-21T16:16:11.640 回答