fork download
  1. using System;
  2. using System.Linq;
  3. using System.Collections.Generic;
  4.  
  5. public class Test
  6. {
  7.  
  8. public static void Main()
  9. {
  10. var txtRange = "16,18,22-30";
  11. var tokens = txtRange.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
  12. .Select(t => new {
  13. Token = t,
  14. Range = t.Split(new[] { '-' }, StringSplitOptions.RemoveEmptyEntries)
  15. }).Select(x => new{ x.Token, x.Range,
  16. RangeStart = int.Parse(x.Range[0]),
  17. RangeEnd = x.Range.Length > 1 ? int.Parse(x.Range[1]) : int.Parse(x.Range[0])
  18. });
  19. int min = tokens.Min(x => x.RangeStart);
  20. int max = tokens.Max(x => x.RangeEnd);
  21.  
  22. var list = new List<String>() { "11", "11A", "12", "12A", "13", "14", "15", "19" };
  23.  
  24. var result = list.Select(s => new
  25. {
  26. Str = s,
  27. Num = int.Parse(new string(s.Where(Char.IsDigit).ToArray()))
  28. })
  29. .Where(x => x.Num >= min && x.Num <= max);
  30.  
  31. foreach(var x in result)
  32. Console.WriteLine("String: {0} Numeric-Part: {1}", x.Str, x.Num);
  33. }
  34. }
Success #stdin #stdout 0.04s 34008KB
stdin
Standard input is empty
stdout
String: 19 Numeric-Part: 19