将整数数组转换为逗号分隔的字符串

337

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

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

我有:

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

我想将它转换为一个字符串

string => "1,2,3,4,5"
5个回答

649
var result = string.Join(",", arr);

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

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

在这种情况下,您不需要传递显式的泛型参数,它将被推断。 - leppie
7
在.NET 4之前的版本中,使用以下代码将一个整数数组转换为逗号分隔的字符串:string.Join(",", Array.ConvertAll(arr, i => i.ToString())) - TPAKTOPA
有没有一种简单的方法来做这个的反向操作?将字符串放入数组中? - Kory
4
使用String.Split方法,详情请参考https://msdn.microsoft.com/zh-cn/library/system.string.split(v=vs.110).aspx。 - Cheng Chen

151

.NET 4

string.Join(",", arr)

.NET 早期版本

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

19
感谢提供.NET4版本之前的版本! - kdenney
1
刚意识到我不能使用 .net 4 版本,直到看到你的答案才明白为什么会出现错误,非常感谢。 - Luis Tellez
我正在使用.NET 4.5。我试图将逗号分隔的数字与字符串连接起来。但是我收到了一个错误,说“无法将string[]转换为char”。所以早期版本运行得非常顺畅。 - Prasanth G

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

你可以使用 Linq 实现它

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

7
你可以使用一对扩展方法来使这个任务更容易:
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();

3
使用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,这是您可以使用的解决方案之一。


2
它由于字符串拼接而表现不佳,尽管如此。 - Simon Belanger
是的,它的性能会很差,但在 .NET 4.0 之前,String.join 只接受字符串数组作为参数。因此,在这种情况下,我们还需要将其转换为字符串。我们可以使用 ToString 它的性能更好,但存在空异常问题。 - sushil pandey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接