将包含整数的字符串解析为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#很陌生,所以一些示例代码将非常感激。谢谢。
这行得通:
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(..)方法在列表中,您可以使用它来获取令牌。然后测试是否存在'-'(如果它是第一个字符,那么它是负数,显然不是一个范围)。