我想让用户通过以下方式输入整数:
用逗号分隔的数字: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/