如何将字符串转换为Int集合

时间:2017-01-22 09:26:02

标签: c# asp.net string generics collections

下面是我的字符串。

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

这是正确的方法吗?

2 个答案:

答案 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()将抛出FormatExceptionTryParse不会。