【问题标题】:What's the easiest way to convert a list of integers to a string of comma separated numbers in C#在C#中将整数列表转换为逗号分隔数字字符串的最简单方法是什么
【发布时间】:2011-01-03 03:07:38
【问题描述】:

我在这里寻找一个班轮,从:

int [] a = {1, 2, 3};
List<int> l = new List<int>(a);

最后是

String s = "1,2,3";

【问题讨论】:

  • 抱歉,我可能不清楚,我想转换l,而不是a。所以,要改写这个,我会说: List l = new List(); l.加(1); l.添加(2); l.添加(3);我想结束"1,2,3"
  • 或者说List&lt;int&gt; l = new List&lt;int&gt; {1, 2, 3};

标签: c# string int


【解决方案1】:
string.Join(",", l.ConvertAll(i => i.ToString()).ToArray());

这是假设您在 .NET 3.5 w/Linq 下编译。

【讨论】:

  • 在这种情况下,ConvertAllToArray 方法与 LINQ 无关:它们属于 List&lt;T&gt; 类型本身。 (但如果您确实希望此代码与旧版本的 C# 一起编译,那么您需要使用 delegate 语法而不是 lambda 作为您的方法参数。)
  • 对于 .NET 4,你可以使用 string.Join(",", l): msdn.microsoft.com/en-us/library/dd992421.aspx
【解决方案2】:

我知道您正在寻找一个单一的衬垫,但如果您创建一个扩展方法,所有未来的使用都是单一的衬垫。这是我使用的一种方法。


public static string ToDelimitedString<T>(this IEnumerable<T> items, string delimiter)
{
    StringBuilder joinedItems = new StringBuilder();
    foreach (T item in items)
    {
        if (joinedItems.Length > 0)
            joinedItems.Append(delimiter);

        joinedItems.Append(item);
    }

    return joinedItems.ToString();
}

对于您的列表,它变为:l.ToDelimitedString(",") 为了方便起见,我添加了一个始终使用逗号作为分隔符的重载。

【讨论】:

  • 我不是反对者,但我会指出这比 String.Join...
【解决方案3】:
l.Select(i => i.ToString()).Aggregate((s1, s2) => s1 + "," + s2)

【讨论】:

    【解决方案4】:

    另一种方法:

    string s = a.Aggregate("", (acc, n) => acc == "" ? n.ToString() : acc + "," + n.ToString());
    

    【讨论】:

    • 没错,这可以完成这项工作,尽管它会比较大列表中的各种String.Join 答案慢得多。
    【解决方案5】:
    int[] array = {1,2,3};
    
    string delimited = string.Join(",", array);
    

    【讨论】:

    • 您不能在 int[] 数组上进行 string.join。这不编译。编辑:嗯..根据另一篇文章,如果您使用.NET 4.0,您可以。您应该在帖子中将其指定为警告。
    【解决方案6】:
    string s = string.Join(",", Array.ConvertAll(a, i => i.ToString()));
    

    或在 .NET 4.0 中,您可以尝试(虽然我不确定它是否会编译):

    string s = string.Join(",", a);
    

    【讨论】:

      【解决方案7】:
        String.Join(",", l);
      

      【讨论】:

        【解决方案8】:
        String s = String.Join(",", a.Select(i => i.ToString()).ToArray());
        

        【讨论】:

          猜你喜欢
          • 2011-09-28
          • 1970-01-01
          • 1970-01-01
          • 2017-09-09
          • 2011-03-26
          • 2016-08-03
          • 1970-01-01
          • 2012-01-17
          相关资源
          最近更新 更多