将包含整数的字符串解析为List

本文关键字:List int 包含 整数 字符串 | 更新日期: 2023-09-27 18:09:32

我想让用户以以下方式输入整数:

  • 以逗号分隔的数字:1,1,122,64000,27等

  • 数字范围:37-2000

  • 以上的混合物:55、2、1-10000、65000-65007、2182

我怎么能解析一个字符串,可能是在任何形式以上,以一个int的列表结束?

例如:1-5,6,7-8应该给出一个包含整数1,2,3,4,5,6,7,8的列表

我对c#很陌生,所以一些示例代码将非常感激。谢谢。

将包含整数的字符串解析为List<int>

这行得通:

var query =
    from x in text.Split(',')
    let y = x.Split('-')
    let b = int.Parse(y[0].Trim())
    let e = int.Parse(y[y.Length - 1].Trim())
    from n in Enumerable.Range(b, e - b + 1)
    select n;
var result = query.ToList();

我建议添加一些错误处理,但如果你的输入格式正确,这是可行的。


** EDIT**: . net 2.0版本。

var result = new List<int>();
foreach (var x in text.Split(','))
{
    var y = x.Split('-');
    var b = int.Parse(y[0].Trim());
    var e = int.Parse(y[y.Length - 1].Trim());
    for (var n = b; n <= e; n++)
    {
        result.Add(n);
    }
}

大致相同……: -)

字符串。用逗号分割,就能得到你想要的如果一个组包含-再次分割你就得到了两个范围值

根据'标记字符串,然后解析单个数字或范围列表。

从内存中有一个Split(..)方法在列表中,您可以使用它来获取令牌。然后测试是否存在'-'(如果它是第一个字符,那么它是负数,显然不是一个范围)。