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