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


以逗号分隔的数字:1,3,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#来说还很陌生,所以将不胜感激一些示例代码。谢谢。

最佳答案

这有效:

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();


我建议添加一些错误处理,但是如果您输入的格式正确,则可以使用。



**编辑**:.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);
    }
}


几乎相同... :-)

10-05 21:09
查看更多