下面是我的字符串。
flex:1
我在做的是: -
var str = "1,2,3,4,5";
var strArr = str.split(","); // this gives me an array of type string
List<int> intCol = new List<int>(); //I want integer collection. Like
这是正确的方法吗?
答案 0 :(得分:4)
当然,这是 这样做的方式 - 但是LINQ让它变得容易多了,因为这正是它的设计目的。你想要一个管道:
这很简单:
List<int> integers = bigString.Split(',').Select(int.Parse).ToList();
此处使用int.Parse
作为方法组是干净的,但是如果您对使用lambda表达式更加满意,可以使用
List<int> integers = bigString.Split(',').Select(s => int.Parse(s)).ToList();
答案 1 :(得分:3)
var numbers = str.Split(',').Select(x => int.Parse(x)).ToList();
但在这种情况下,我会添加一些错误处理,以防项目无法转换为这样的整数:
var strArr = str.Split(',')
.Select(x =>
{
int num;
if (int.TryParse(x, out num))
{
return num;
}
// Parse failed so return -1 or some other value or log it
// or throw exception but then this whole operation will fail
// so it is upto you and your needs to decide what to do in such
// a case.
return -1;
});
注意:如果无法转换该值,Convert.ToInt()
将抛出FormatException
。 TryParse
不会。