我在 C# 中有以下字符串:
string a="1,2,3,4,5,6,7,8,9,10,22,45,66,88,100,101,102,103,104,105,140,199";
我想生成以下输出:
1-10,22,45,66,88,100-105,140,199这样把连续的数字分到区间
"initialnumber-endnumber"并保持其他不变。
你能帮我一下吗?
提前致谢。
最佳答案
IEnumerable<string> Rangify(IList<int> input) {
for (int i = 0; i < input.Count; ) {
var start = input[i];
int size = 1;
while (++i < input.Count && input[i] == start + size)
size++;
if (size == 1)
yield return start.ToString();
else if (size == 2) {
yield return start.ToString();
yield return (start + 1).ToString();
} else if (size > 2)
yield return start + " - " + (start + size - 1);
}
}
关于c# - 将数字序列转换为范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11956780/