簡體   English   中英

將全名拆分為名字、姓氏和頭銜

[英]Split full name into first, last and titles

列示例

我有一個名為 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,但這是一個 integer 值,我需要字符串。

如果您確定名字或姓氏中沒有空格,請嘗試以下操作:

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);
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM