来自最后一个元素的String.join数组

时间:2017-04-14 11:35:37

标签: c# arrays

我有一个场景,我得到一个逗号分隔的字符串LastName,FirstName。我必须将其转换为FirstName LastName。

我的代码如下:

Public static void main(string [] args)
{
      var str = "Lastname, FirstName":
      var strArr = str.Split(',');
      Array. Reverse(strArr);
      var output = string.join(" ", strArr);
}

有没有更好的方法来实现这一点,例如在一行中或使用LINQ?

4 个答案:

答案 0 :(得分:1)

是的,IEnumerables已经有一个反向扩展方法:

var output = string.Join(" ",str.Split(',').Reverse());

答案 1 :(得分:1)

分割后使用Aggregate和Trim你的名字,你不需要逆转。

 str.Split(',').Aggregate((lname, fname) => fname.Trim() + " " + lname.Trim())

答案 2 :(得分:1)

这可以处理许多不同的边缘情况。你提到了一个,但没有把它包含在你的初始问题中,所以我认为可能还有其他问题。

var tests = new[]{"Lastname, FirstName", "Lastname, ", ", FirstName", "Lastname", "FirstName"};
foreach(var str in tests)
{
    var strArr = str.Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries)
        .Where(x => !string.IsNullOrWhiteSpace(x))
        .Reverse()
        .Select(x => x.Trim());
    var output = string.Join(" ", strArr);
    Console.WriteLine(output);
}

Working Fiddle

答案 3 :(得分:0)

很抱歉问这么愚蠢的问题,下面是我的新代码..

Public static void main(string [] args)
    {
          var str = "Lastname, FirstName":
          var strArr = str.Split(',').Select(p=>p.Trim()).ToArray();
          var output = string.join(" ", strArr.Reverse());
    }