using System;
using System.Linq;
using System.Collections.Generic;
public class Test
{
public static void Main()
{
var txtRange = "16,18,22-30";
var tokens = txtRange.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
.Select(t => new {
Token = t,
Range = t.Split(new[] { '-' }, StringSplitOptions.RemoveEmptyEntries)
}).Select(x => new{ x.Token, x.Range,
RangeStart = int.Parse(x.Range[0]),
RangeEnd = x.Range.Length > 1 ? int.Parse(x.Range[1]) : int.Parse(x.Range[0])
});
int min = tokens.Min(x => x.RangeStart);
int max = tokens.Max(x => x.RangeEnd);
var list = new List<String>() { "11", "11A", "12", "12A", "13", "14", "15", "19" };
var result = list.Select(s => new
{
Str = s,
Num = int.Parse(new string(s.Where(Char.IsDigit).ToArray()))
})
.Where(x => x.Num >= min && x.Num <= max);
foreach(var x in result)
Console.WriteLine("String: {0} Numeric-Part: {1}", x.Str, x.Num);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CiAgICAKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKCSAgIHZhciB0eHRSYW5nZSA9ICIxNiwxOCwyMi0zMCI7CiAgICAgICAgICAgIHZhciB0b2tlbnMgPSB0eHRSYW5nZS5TcGxpdChuZXdbXSB7ICcsJyB9LCBTdHJpbmdTcGxpdE9wdGlvbnMuUmVtb3ZlRW1wdHlFbnRyaWVzKQogICAgICAgICAgICAgICAgLlNlbGVjdCh0ID0+IG5ldyB7IAogICAgICAgICAgICAgICAgICAgIFRva2VuID0gdCwgCiAgICAgICAgICAgICAgICAgICAgUmFuZ2UgPSAgdC5TcGxpdChuZXdbXSB7ICctJyB9LCBTdHJpbmdTcGxpdE9wdGlvbnMuUmVtb3ZlRW1wdHlFbnRyaWVzKQogICAgICAgICAgICAgICAgfSkuU2VsZWN0KHggPT4gbmV3eyB4LlRva2VuLCB4LlJhbmdlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZ2VTdGFydCA9IGludC5QYXJzZSh4LlJhbmdlWzBdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZ2VFbmQgPSB4LlJhbmdlLkxlbmd0aCA+IDEgPyBpbnQuUGFyc2UoeC5SYW5nZVsxXSkgOiBpbnQuUGFyc2UoeC5SYW5nZVswXSkKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBpbnQgbWluID0gdG9rZW5zLk1pbih4ID0+IHguUmFuZ2VTdGFydCk7CiAgICAgICAgICAgIGludCBtYXggPSB0b2tlbnMuTWF4KHggPT4geC5SYW5nZUVuZCk7CgogICAgICAgICAgICB2YXIgbGlzdCA9IG5ldyBMaXN0PFN0cmluZz4oKSB7ICIxMSIsICIxMUEiLCAiMTIiLCAiMTJBIiwgIjEzIiwgIjE0IiwgIjE1IiwgIjE5IiB9OwoKICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGxpc3QuU2VsZWN0KHMgPT4gbmV3CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFN0ciA9IHMsCiAgICAgICAgICAgICAgICBOdW0gPSBpbnQuUGFyc2UobmV3IHN0cmluZyhzLldoZXJlKENoYXIuSXNEaWdpdCkuVG9BcnJheSgpKSkKICAgICAgICAgICAgfSkKICAgICAgICAgICAgLldoZXJlKHggPT4geC5OdW0gPj0gbWluICYmIHguTnVtIDw9IG1heCk7CgogICAgICAgICAgICBmb3JlYWNoKHZhciB4IGluIHJlc3VsdCkKICAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJTdHJpbmc6IHswfSBOdW1lcmljLVBhcnQ6IHsxfSIsIHguU3RyLCB4Lk51bSk7Cgl9Cn0=