【问题标题】:Splitting a string after the last space在最后一个空格后拆分字符串
【发布时间】:2016-07-01 05:47:51
【问题描述】:

我正在制作一个同步到数据库的程序,它接受名称,所以我想在最后一个“空格”之后将解析的字符串拆分为 2 个字符串。

例如将名称“John Doe Jackson”拆分为: 约翰·多伊和杰克逊

到目前为止,我做了什么我得到了姓氏:

public static string getLastName(string fullname)
{
    string lastName = fullname.Split(' ').LastOrDefault();
}

如何返回字符串的其余部分,所以我有类似的东西:

名字:John Doe

姓:杰克逊


编辑:通过这样做,不是最干净的方式,但它可以完成工作!

     public static string getLastName(string fullname)
    {
        string lastName = fullname.Split(' ').LastOrDefault();
        Console.WriteLine(lastName);
        return lastName;
    }

    public static string getFirstName(string fullname)
    {
        var parts = fullname.Split(' ');
        var lastName = parts.LastOrDefault();
        var firstName = string.Join(" ", parts.Take(parts.Length - 1));
        return firstName;
    }

【问题讨论】:

    标签: c# c#-4.0


    【解决方案1】:

    你可以试试这样的:

    var parts = fullname.Split(' ');
    var lastName = parts.LastOrDefault();
    var firstName = string.Join(" ",parts.Take(parts.Length-1));
    

    【讨论】:

    • 在我的代码中使用了这个,但意识到在“fullname”中没有空格的情况下,“lastName”将包含“fullName”而“firstName”将为空。字符串开头也只有一个空格。
    • @Riga 这仅在您的字符串格式为“John Doe Jackson”时才有效。它解决了这个问题。如果 fullName 中没有空格,则另一种逻辑(应应用特定格式的自定义)。
    • 非常好的答案。 +1
    【解决方案2】:

    我愿意:

    var lastSpaceIndex = fullName.LastIndexOf(' ');
    var firstName = fullName.Substring(0, lastSpaceIndex);
    var lastName = fullName.Substring(lastSpaceIndex+1);
    

    See it in action here

    【讨论】:

      【解决方案3】:

      您可以使用string.Join

      public static string getFirstName(string fullname)
      {
          return string.join(" ",fullname.Split(' ').Take(fullname.Split(' ').Count()-1));
      
      }
      

      【讨论】:

        【解决方案4】:
        string name = "John Doe Jackson";
        var names = name.Split(' ');
        string firstname = names[0] + " " + names[1];
        string lastname = names[2];
        

        【讨论】:

        • 此方案不适用于 where middle name, not found
        【解决方案5】:

        另一个版本基于接受的答案,但保护字符串为空/空,并且在 fullName 中没有空格的情况下将输入保留为 firstName

                if (string.IsNullOrWhiteSpace(fullName)) return new KeyValuePair<string, string>(string.Empty, string.Empty);
        
                var parts = fullName.Trim().Split(' ');
                if (parts.Length == 1) return new KeyValuePair<string, string>(parts[0], string.Empty);
        
                var firstName = string.Join(" ", parts.Take(parts.Length - 1));
                var lastName = parts.LastOrDefault();
        
                return new KeyValuePair<string, string>(firstName, lastName);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-06-18
          • 1970-01-01
          • 2015-11-14
          • 2017-04-23
          • 1970-01-01
          • 2010-12-04
          • 1970-01-01
          相关资源
          最近更新 更多