将全名拆分为名字、姓氏和头衔
Split full name into first, last and titles
example of the column
我有一个名为 FULLNAME 的列,其中包含由 space 分隔的 FIRSTNAME 和 SURNAME 的变体,以及由 space 分隔的 TITLE、FIRSTNAME 和 SURNAME。例如,我可以让 JOHN SMITH 或 DR JOHN SMITH。
我在 Visual Studios 中使用 C#。
我按照以下方式遍历每一个:
foreach (DataRow dr in spreadsheetdata.Tables["EPABase"].Rows)
我的标题数组如下:
title[0] = "Mr";
title[1] = "Mrs";
title[2] = "Miss";
title[3] = "Ms";
title[4] = "Dr";
title[5] = "Rev";
title[6] = "Hon";
title[7] = "Mx";
title[8] = "Other";
我采用哪种方式并不重要,但首先获取 SURNAME 可能更容易,因为它始终是字符串中的最后一组字符,直到第一个 space来自右边的值。如果我将它放入它自己的 SURNAME 字符串中,然后将其从原始的 FULLNAME 字符串中删除,然后我可以使用我的数组查看从左边到第一个 space 的第一组字符是否出现在其中, 如果是,则用作 TITLE 字符串,但如果不是,则使用删除 SURNAME 后的剩余字符串作为 FIRSTNAME 字符串。
关于如何实现第一步,获取 SURNAME,有点卡住了。我试过 LASTINDEXOF,但这是一个整数值,我需要字符串。
如果您确定名字或姓氏中没有 space,您可以尝试这样的操作:
string[] fullNames = { "John Smith", "Dr John Smith" };
string[] titles = { "Mr", "Mrs", "Dr" };
foreach (var item in fullNames)
{
var details = item.Split(' ');
if (titles.Contains(details[0]))
{
Console.WriteLine($"Title: { details[0]} ");
Console.WriteLine($"First Name: { details[1]} ");
Console.WriteLine($"Last Name: { details[2]} ");
}
else
{
Console.WriteLine($"First Name: { details[0]} ");
Console.WriteLine($"Last Name: { details[1]} ");
}
}
要获取姓氏,您可以执行以下操作:
foreach (DataRow dr in spreadsheetdata.Tables["EPABase"].Rows)
{
var value = dr["FULLNAME"].ToString();
var elementsOfName = value.Split(" ");
var lastName = elementsOfName[elementsOfName.Length - 1];
Console.WriteLine(lastName);
}
example of the column
我有一个名为 FULLNAME 的列,其中包含由 space 分隔的 FIRSTNAME 和 SURNAME 的变体,以及由 space 分隔的 TITLE、FIRSTNAME 和 SURNAME。例如,我可以让 JOHN SMITH 或 DR JOHN SMITH。
我在 Visual Studios 中使用 C#。
我按照以下方式遍历每一个:
foreach (DataRow dr in spreadsheetdata.Tables["EPABase"].Rows)
我的标题数组如下:
title[0] = "Mr";
title[1] = "Mrs";
title[2] = "Miss";
title[3] = "Ms";
title[4] = "Dr";
title[5] = "Rev";
title[6] = "Hon";
title[7] = "Mx";
title[8] = "Other";
我采用哪种方式并不重要,但首先获取 SURNAME 可能更容易,因为它始终是字符串中的最后一组字符,直到第一个 space来自右边的值。如果我将它放入它自己的 SURNAME 字符串中,然后将其从原始的 FULLNAME 字符串中删除,然后我可以使用我的数组查看从左边到第一个 space 的第一组字符是否出现在其中, 如果是,则用作 TITLE 字符串,但如果不是,则使用删除 SURNAME 后的剩余字符串作为 FIRSTNAME 字符串。
关于如何实现第一步,获取 SURNAME,有点卡住了。我试过 LASTINDEXOF,但这是一个整数值,我需要字符串。
如果您确定名字或姓氏中没有 space,您可以尝试这样的操作:
string[] fullNames = { "John Smith", "Dr John Smith" };
string[] titles = { "Mr", "Mrs", "Dr" };
foreach (var item in fullNames)
{
var details = item.Split(' ');
if (titles.Contains(details[0]))
{
Console.WriteLine($"Title: { details[0]} ");
Console.WriteLine($"First Name: { details[1]} ");
Console.WriteLine($"Last Name: { details[2]} ");
}
else
{
Console.WriteLine($"First Name: { details[0]} ");
Console.WriteLine($"Last Name: { details[1]} ");
}
}
要获取姓氏,您可以执行以下操作:
foreach (DataRow dr in spreadsheetdata.Tables["EPABase"].Rows)
{
var value = dr["FULLNAME"].ToString();
var elementsOfName = value.Split(" ");
var lastName = elementsOfName[elementsOfName.Length - 1];
Console.WriteLine(lastName);
}