我想让用户以下列方式输入整数:
用逗号分隔的
如何解析以int列表结尾的任何形式中的字符串?
因此,例如: 1-5,6,7-8应该给出一份清单,其中应包含国家统计局1、2、3、4、5、6、6、7、8
我对C#非常陌生,所以非常希望有一些示例代码。谢谢。
发布于 2011-09-22 06:18:18
这样做是可行的:
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);
}
}
完全一样..。:-)
发布于 2011-09-22 06:10:53
按逗号拆分的String.split将提供您所需的所有内容,如果一个组再次包含-拆分,并且您有两个范围值。
发布于 2011-09-22 06:12:23
根据“,”对字符串进行符号化,然后解析单个数字或范围的列表。
内存中有一个拆分(.)方法,可以使用该方法获取令牌。然后测试是否存在一个“-”(如果它是第一个字符,那么它是否定的,而不是一个明显的范围)。
https://stackoverflow.com/questions/7510237
复制相似问题