fork download
  1. using System;
  2. using System.Globalization;
  3. using System.Linq;
  4. using System.Collections.Generic;
  5.  
  6. public class Test
  7. {
  8.  
  9.  
  10. public static void Main()
  11. {
  12. var rangeStrings = new List<string> { "[a-d]", "[A-H]", "[c,d]", "[B,C]", "[03-05]" };
  13. var separator = new[] { "-", "," };
  14. IEnumerable<IEnumerable<string>> ranges = rangeStrings
  15. .Select(rs =>
  16. {
  17. string inner = rs.Replace("[", "").Replace("]", "");
  18. string[] token = inner.Split(separator, StringSplitOptions.RemoveEmptyEntries);
  19. bool isNumeric = token[0].All(Char.IsDigit);
  20. int start, end;
  21. if(isNumeric)
  22. {
  23. start = int.Parse(token.First());
  24. end = int.Parse(token.Last());
  25. }
  26. else
  27. {
  28. start = (int)token.First().First();
  29. end = (int)token.Last().Last();
  30. }
  31. var range = Enumerable.Range(start, end - start + 1)
  32. .Select(i => isNumeric ? i.ToString() : ((Char)i).ToString());
  33. return range;
  34. });
  35.  
  36. foreach (var range in ranges)
  37. {
  38. Console.WriteLine("Range: {0}", string.Join(",", range.ToArray()));
  39. }
  40. }
  41. }
Success #stdin #stdout 0.06s 34912KB
stdin
Standard input is empty
stdout
Range: a,b,c,d
Range: A,B,C,D,E,F,G,H
Range: c,d
Range: B,C
Range: 3,4,5