Beispiel #1
0
 public static Range CompileRange(string value)
 {
     
     Range range = new Range();
     range._value = value;
     if (string.IsNullOrEmpty(value))
     {
         range.Type = RangeType.Bytes;
         range.Start = -1;
         range.End = -1;
     }
     else
     {
         var p = value.Split("=".ToCharArray());
         var bytes = p[1].Split("-".ToCharArray());
         range.Type = (RangeType)Enum.Parse(typeof(RangeType), p[0], true);
         range.Start = long.Parse(bytes[0]);
         if (string.IsNullOrEmpty(bytes[1]))
             range.End = -1;
         else
             range.End = long.Parse(bytes[1]);
     }
     
     return range;
 }
Beispiel #2
0
        public static Range[] Parse(string range)
        {
            string[] buf = range.Split("=".ToCharArray(), 2, StringSplitOptions.None);
            List<Range> res = new List<Range>();
            string unit = buf[0];
            if (string.IsNullOrEmpty(buf[1]))
            {
                res.Add(new Range() { Unit = unit });
                return res.ToArray();
            }
            buf = buf[1].Split(",".ToCharArray());
            foreach (var sr in buf)
            {
                Range r = new Range();
                r.Unit = unit;
                var rbuf = sr.Split("-".ToCharArray(), 2, StringSplitOptions.None);
                if (string.IsNullOrEmpty(rbuf[0]))
                    r.From = null;
                else
                    r.From = long.Parse(rbuf[0]);
                if (string.IsNullOrEmpty(rbuf[1]))
                    r.To = null;
                else r.To = long.Parse(rbuf[1]);
                res.Add(r);
            }

            return res.ToArray();
        }