问题描述
C#/.NET应用程序编程开发中,如何将一个数组转换成用逗号分隔的字符串?
比如有数组arr
,定义如下:
int[] arr = new[] { 1, 2, 3, 4, 5 };
如何将数组arr
转换成以逗号分隔的字符串呢,如下:
string result = "1,2,3,4,5";
方案一
如果是.NET 4以及上版本,可以使用.NET Framework内置的string.Join()
静态方法,Join()
方法的参数声明如下:
public static string Join<T>(string separator, IEnumerable<T> values);
使用示例如下:
using System;
namespace ConsoleApp2
{
class Program
{
public static void Main()
{
int[] arr = new[] { 1, 2, 3, 4, 5 };
string result = string.Join(",",arr);
Console.WriteLine($"result:{result}");
Console.ReadLine();
}
}
}
输出结果:
result:1,2,3,4,5
方案二
如果是.NET 4以下版本中,则可以使用Array.ConvertAll()
方法转换,如下:
string result = string.Join(",", Array.ConvertAll(arr, x => x.ToString()))
方案三
使用LINQ的Select()
和Aggregate()
方法转换,如下:
string arrTostr = arr.Select(a => a.ToString()).Aggregate((i, j) => i + "," + j);
方案三
为了方法的可复用,可以为IEnumerable
创建一些静态扩展方法,如下:
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));
}
调用示例:
string result = new int[] { 1, 2, 3, 4, 5 }.ToDelimitedString();
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册