var data = new[]
{
"17-24 36-41 53-58 138-143 155",
"13-16 32 49-52 66-69",
"13-16 32-35 49-52 66 83 100-103",
};
foreach(var row in data.Split().ParseRange())
Console.WriteLine(string.Join(" ", row));
Чтобы заработало добавляем методы расширения
public static class ArrayEntentions
{
public static IEnumerable<IEnumerable<string>> Split(this IEnumerable<string> source, char separator = ' ')
{
return source.Select(x => x.Split(separator));
}
public static IEnumerable<IEnumerable<int>> ParseRange(this IEnumerable<IEnumerable<string>> source)
{
return source.Select(ArrayEntentions.Parse);
}
public static IEnumerable<int> Parse(this IEnumerable<string> source)
{
foreach(var s in source)
{
int o;
if (int.TryParse(s, out o))
{
yield return o;
}
else
{
var interval = s.SplitInterval();
foreach(var i in Enumerable.Range(interval.Item1, interval.Item2))
yield return i;
}
}
}
public static Tuple<int, int> SplitInterval(this string source, char separator = '-')
{
var cells = source.Split(separator);
if (cells.Length != 2) throw new FormatException();
var start = int.Parse(cells[0]);
var count = int.Parse(cells[1]) - start + 1;
return Tuple.Create(start, count);
}
}
13,14,15,16,32,49,50,51,52,66,67,68,69дляelements_1[1]– Qwertiy Jan 31 '18 at 19:01int[i,j]только с очень большой избыточностью, лучше вint[i][j]– rdorn Jan 31 '18 at 19:11