use*_*456 24 c# string string-parsing
我需要一些帮助,我有一个全名字符串,我需要做的是分开并分别使用这个全名字符串作为firstname和lastname.
Adr*_*iro 39
如果您确定您有名字和姓氏,这将有效.
string fullName = "Adrian Rules";
var names = fullName.Split(' ');
string firstName = names[0];
string lastName = names[1];
确保检查长度names.
names.Length == 0 //will not happen, even for empty string
names.Length == 1 //only first name provided (or blank)
names.Length == 2 //first and last names provided
names.Length > 2 //first item is the first name. last item is the last name. Everything else are middle names
更新
当然,这是一个相当简化的问题视图.我的答案的目的是解释如何string.Split()工作.但是,你必须记住,一些姓氏是复合名称,如@AlbertEin所指出的"Luis da Silva".
这远非一个简单的问题需要解决.一些介词(法语,西班牙语,葡萄牙语等)是姓氏的一部分.这就是@John Saunders问"用什么语言?"的原因.约翰还指出,前缀(先生,夫人)和后缀(Jr.,III,MD)可能会妨碍.
alb*_*ein 12
您可以尝试使用空格解析它,但它不会起作用,例如:
var fullName = "Juan Perez";
var name = fullName.Substring(0, fullName.IndexOf(" "));
var lastName = fullName.Substring(fullName.IndexOf(" ") + 1);
但是,如果用户输入很多,那就会失败,如果他有两个名字呢?"Juan Pablo Perez".
名称是复杂的东西,因此,不可能总是知道给定字符串中的名字和姓氏是哪个部分.
编辑
你不应该使用string.Split方法来提取姓氏,一些姓氏是由两个或多个单词组成的,例如,我的朋友的姓氏是"Ponce de Leon".
Wir*_*dIn 11
此解决方案适用于姓氏多于一个字的人.将第一个单词视为名字,并将其他所有内容作为姓氏.
public static string getLastNameCommaFirstName(String fullName) {
    List<string> names = fullName.Split(' ').ToList();
    string firstName = names.First();
    names.RemoveAt(0);
    return String.Join(" ", names.ToArray()) + ", " + firstName;            
} 
例如,将Brian De Palma传递给上述函数将返回"De Palma,Brian"
getLastNameFirst("Brian De Palma");
//returns "De Palma, Brian"
您可以使用此版本(MSDN)的Split方法,如下所示:
var testcase = "John Doe";
var split = testcase.Split(new char[] { ' ' }, 2);
在这种情况下split[0]会John和split[1]会Deo。另一个例子:
var testcase = "John Wesley Doe";
var split = testcase.Split(new char[] { ' ' }, 2);
在这种情况下split[0]会John和split[1]会Wesley Doe。
请注意,长度split永远不会超过 2
因此,与下面的代码,你可以得到FirstName和LastName很好的:
var firstName = "";
var lastName = "";
var split = testcase.Split(new char[] { ' ' }, 2);
if (split.Length == 1)
{
    firstName = "";
    lastName = split[0];
}
else
{
    firstName = split[0];
    lastName = split[1];
}
希望这个答案能为这个页面添加一些有用的东西。
尝试:
  string fullName = "The mask lol"; 
    string[] names = fullName.Split(' '); 
    string name = names.First();
    string lasName = names.Last();