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

标签 c# parsing .net-2.0

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

  • 用逗号分隔的数字: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);
    }
}

大致相同...:-)

关于c# - 将包含整数的字符串解析为 List<int>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7510237/

相关文章:

C# 类似于 C++ 中的 DateTime

.net - 您可以将 .net 3.5 DLL 与 .net 2.0 网站一起使用吗?

c# - 重用现有的应用配置

c# - SSH 到服务器,然后 telnet 到设备

c# - winform 的异步加载

java - C# SortedDictionary 中 Java 的 SortedMap.tailMap 的等价物

C++:解析文本文件并将其读入数组

java - 是否可以停止Gson解析?

c - 如何解析 C 中的十进制 UUID 字符串?

c# - 如何提取添加到 C# 项目的 Web 引用的 URL?