我想将一个数组或整数列表转换为逗号分隔的字符串,如下所示:
string myFunction(List<int> a) {
return string.Join(",", a);
}
Run Code Online (Sandbox Code Playgroud)
但是string.Join只List<string>
作为第二个参数.做这个的最好方式是什么?
Mar*_*ers 135
最好的方法是升级到.NET 4.0,其中存在一个可以满足您需要的重载:
如果无法升级,则可以使用Select和ToArray实现相同的效果.
return string.Join(",", a.Select(x => x.ToString()).ToArray());
Run Code Online (Sandbox Code Playgroud)
在 .NET 中,列表类有一个.ToArray()
方法。像这样的事情可以工作:
string myFunction(List<int> a)
{
return string.Join(",", a.ToArray());
}
Run Code Online (Sandbox Code Playgroud)
参考:List<T> 方法(MSDN)
一个可扩展和安全的实现一个通用的枚举字符串的加入对.NET 3.5.迭代器的使用是为了使连接字符串值不会卡在字符串的末尾.它适用于0,1个和更多元素:
public static class StringExtensions
{
public static string Join<T>(this string joinWith, IEnumerable<T> list)
{
if (list == null)
throw new ArgumentNullException("list");
if (joinWith == null)
throw new ArgumentNullException("joinWith");
var stringBuilder = new StringBuilder();
var enumerator = list.GetEnumerator();
if (!enumerator.MoveNext())
return string.Empty;
while (true)
{
stringBuilder.Append(enumerator.Current);
if (!enumerator.MoveNext())
break;
stringBuilder.Append(joinWith);
}
return stringBuilder.ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
var arrayOfInts = new[] { 1, 2, 3, 4 };
Console.WriteLine(",".Join(arrayOfInts));
var listOfInts = new List<int> { 1, 2, 3, 4 };
Console.WriteLine(",".Join(listOfInts));
Run Code Online (Sandbox Code Playgroud)
请享用!
归档时间: |
|
查看次数: |
80096 次 |
最近记录: |