0

列示例

我有一个名为 FULLNAME 的列,其中包含由空格分隔的 FIRSTNAME 和 SURNAME 的变体,以及由空格分隔的 TITLE、FIRSTNAME 和 SURNAME。例如,我可以请约翰·史密斯或约翰·史密斯博士。

我在 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 可能更容易,因为它始终是字符串中的最后一组字符,直到右边的第一个空格值。如果我将它放入它自己的 SURNAME 字符串中,然后将其从原始 FULLNAME 字符串中删除,然后我可以使用我的数组查看从左边到第一个空格的第一组字符是否出现在其中,如果是的话用作 TITLE 字符串,但如果不是,则使用删除 SURNAME 后的剩余字符串作为 FIRSTNAME 字符串。

关于如何实现第一步,将 SURNAME 取出来,有点卡住了。我试过 LASTINDEXOF,但这是一个整数值,我需要字符串。

4

2 回答 2

1

如果您确定名字或姓氏中没有空格,请尝试以下操作:

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]} ");
            }
        }
于 2019-11-21T12:01:30.957 回答
0

要获取姓氏,您可以执行以下操作:

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);
        }
于 2019-11-21T12:15:43.540 回答