我有一个看起来像“34,45,74,23”的字符串并且是动态生成的。如何将其转换为List?
var y = numString();
y.ToList();
答案 0 :(得分:5)
这应该会给你一个List<int>
。
str.Split(',').Select(int.Parse).ToList();
如果您不确定所有字符串是否可以解析为int
,或者您的字符串包含多个逗号(如23,,24,25
)或无效的字符,您可以先使用Where
过滤序列:< / p>
var numbers = str.Split(',').Where(x => x.All(char.IsDigit)).Select(int.Parse);
或者您可以使用TryParse
:
var numbers = str.Split(',').Select(x =>
{
int result;
if (int.TryParse(x, out result)) return result;
return int.MinValue;
}).Where(x => x != int.MinValue).ToList();
可能TryParse
是最佳选择,因为char.IsDigit
会为所有数字返回true
,而不只是(0-9)
。
答案 1 :(得分:2)
使用Linq:
var numbers = y.Split(',').Select(num => int.Parse(num)).ToList();
答案 2 :(得分:1)
这应该为你做
string source = "34,45,74,23";
var stringArray = source.Split(',');
var intArray = stringArray.Select(x => Convert.ToInt32(x)).ToList();
答案 3 :(得分:1)
如果您确定该格式有效,则可以使用Array.ConvertAll
和效率更高的List<T>
constructor:
string[] numbers = "34,45,74,23".Split(',');
var list = new List<int>(Array.ConvertAll(numbers, int.Parse));