如果有一个整数的List<int>
(例如:1 - 3 - 4
),我该如何将它转换为以下类型的字符串?
例如,输出应为:
string values = "1,3,4";
var nums = new List<int> {1, 2, 3};
var result = string.Join(", ", nums);
var ints = new List<int>{1,3,4};
var stringsArray = ints.Select(i=>i.ToString()).ToArray();
var values = string.Join(",", stringsArray);
String.Join
提供了一个重载方法,接受一个IEnumerable<T>
参数,因此可以在不使用中间数组的情况下完成字符串连接(此重载方法对每个输入元素调用ToString()
方法):string.Join(",", ints)
。 - Richard另一种解决方案是使用Aggregate。这被认为比提供的其他解决方案慢得多!
var ints = new List<int>{1,2,3,4};
var strings =
ints.Select(i => i.ToString(CultureInfo.InvariantCulture))
.Aggregate((s1, s2) => s1 + ", " + s2);
看下面的评论,你就会知道为什么不应该使用它。改用String.Join
或StringBuilder
。
string values = "1,3,4";
var output = new StringConverter().ConvertFrom<List<int>>(values);
示例2(显式指定分隔符)
string values = "1 ; 3; 4";
var output = new StringConverter().ConvertFrom<List<int>>(values), new ConverterOptions { Delimiter = ';' });
public static string ToCommaString(this List<int> list)
{
if (list.Count <= 0)
return ("");
if (list.Count == 1)
return (list[0].ToString());
System.Text.StringBuilder sb = new System.Text.StringBuilder(list[0].ToString());
for (int x = 1; x < list.Count; x++)
sb.Append("," + list[x].ToString());
return (sb.ToString());
}
public static List<int> CommaStringToIntList(this string _s)
{
string[] ss = _s.Split(',');
List<int> list = new List<int>();
foreach (string s in ss)
list.Add(Int32.Parse(s));
return (list);
}
使用方法:
String s = "1,2,3,4";
List<int> list = s.CommaStringToIntList();
list.Add(5);
s = list.ToCommaString();
s += ",6";
list = s.CommaStringToIntList();
你可以使用委托来实现同样的功能
List<int> intList = new List<int>( new int[] {20,22,1,5,1,55,3,10,30});
string intStringList = string.Join(",", intList.ConvertAll<string>(delegate (int i) { return i.ToString(); });