【问题标题】:Convert array of integers to comma-separated string将整数数组转换为逗号分隔的字符串
【发布时间】:2011-06-12 23:54:49
【问题描述】:

这是一个简单的问题;我是 C# 的新手,我该如何执行以下操作

  • 我想将整数数组转换为逗号分隔的字符串。

我有

int[] arr = new int[5] {1,2,3,4,5};

我想把它转换成一个字符串

string => "1,2,3,4,5"

【问题讨论】:

    标签: c# arrays string


    【解决方案1】:
    var result = string.Join(",", arr);
    

    这使用string.Join 的以下重载:

    public static string Join<T>(string separator, IEnumerable<T> values);
    

    【讨论】:

    • 在这种情况下,您不需要传递显式的泛型参数。它会被推断出来。
    • Pre .NET 4 string.Join(",", Array.ConvertAll(arr, i => i.ToString()))
    • 有没有一种简单的方法来做相反的事情?将字符串取出并放入数组中?
    • @Kory: 使用 String.Split 方法,见msdn.microsoft.com/en-us/library/…
    【解决方案2】:

    .NET 4

    string.Join(",", arr)
    

    .NET 早期

    string.Join(",", Array.ConvertAll(arr, x => x.ToString()))
    

    【讨论】:

    • 感谢 .NET4 之前的版本!
    • 刚刚意识到我无法使用 .net 4 版本,直到看到您的回答,我才明白为什么会出错,谢谢。
    • 我使用的是 .NET 4.5。我试图用一个字符串连接逗号分隔的数字。我收到一条错误消息,提示“无法将字符串 [] 转换为字符”。所以早期版本完美无缺。
    【解决方案3】:
    int[] arr = new int[5] {1,2,3,4,5};
    

    你可以使用 Linq 来实现它

    String arrTostr = arr.Select(a => a.ToString()).Aggregate((i, j) => i + "," + j);
    

    【讨论】:

      【解决方案4】:

      您可以使用一对扩展方法来简化此任务:

      public static string ToDelimitedString<T>(this IEnumerable<T> lst, string separator = ", ")
      {
          return lst.ToDelimitedString(p => p, separator);
      }
      
      public static string ToDelimitedString<S, T>(this IEnumerable<S> lst, Func<S, T> selector, 
                                                   string separator = ", ")
      {
          return string.Join(separator, lst.Select(selector));
      }
      

      所以现在只需:

      new int[] { 1, 2, 3, 4, 5 }.ToDelimitedString();
      

      【讨论】:

        【解决方案5】:

        使用 LINQ Aggregate 方法将整数数组转换为逗号分隔的字符串

        var intArray = new []{1,2,3,4};
        string concatedString = intArray.Aggregate((a, b) =>Convert.ToString(a) + "," +Convert.ToString( b));
        Response.Write(concatedString);
        

        输出将是

        1,2,3,4

        如果您没有安装 .net 4,这是您可以使用的解决方案之一。

        【讨论】:

        • 由于字符串连接,它的性能很差,但是
        • 是的,它的性能会很差,但在 .net 4.0 之前 String.join 只将字符串数组作为参数。因此,在这种情况下,我们还需要在字符串中进行转换。我们可以使用 ToString 它性能更好,但是有空异常问题
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-11-09
        • 2021-12-18
        • 1970-01-01
        • 2016-02-08
        相关资源
        最近更新 更多