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


273

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

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

我有

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

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

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

Answers:


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

这使用以下重载string.Join

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

在这种情况下,您无需传递显式的泛型参数。它将被推断。
2011年

6
.NET 4之前的string.Join(“,”,Array.ConvertAll(arr,i => i.ToString()))
TPAKTOPA 2014年

有简单的方法可以做到这一点吗?将字符串放入数组中吗?
Kory 2015年

3
@Kory:使用String.Split方法,请参阅msdn.microsoft.com/en-us/library/...
程晨

132

NET 4

string.Join(",", arr)

.NET较早

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

17
感谢.NET4之前的版本!
kdenney 2011年

1
刚刚意识到我无法使用.net 4版本,并且直到我看到您的回答,我才明白为什么会出错,谢谢。
路易斯·泰勒斯

我正在使用.NET 4.5。我试图用字符串连接逗号分隔的数字。我收到一个错误消息:“无法将string []转换为char”。因此,早期版本可以完美地工作。
Prasanth G


5

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

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


但是,由于字符串连接,它的性能较差
Simon Belanger 2013年

是的,它的性能会很差,但在.net 4.0 String.join之前仅将字符串数组作为参数。因此,在这种情况下,我们还需要转换为字符串。我们可以使用ToString使其性能更好,但存在null异常的问题
sushil pandey
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.