public void ExtractSingle() { IEnumerable <DateTime> x = DateTimeExtractor.Extract("Wake me up seven thirty tomorrow"); DateTime dt = x.First(); Assert.AreEqual( DateTime.Now.Date.AddDays(1).AddHours(7).AddMinutes(30), new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second)); }
public IEnumerable <DateTime> Get(string s, string dt) { return(DateTimeExtractor.Extract( s, DateTime.ParseExact(dt, "s", CultureInfo.InvariantCulture, DateTimeStyles.None))); }
public void ExtractWord() { IEnumerable <DateTime> x = DateTimeExtractor.Extract("Tomorrow"); DateTime dt = x.First(); DateTime ans = DateTime.Now.AddDays(1); Assert.AreEqual( new DateTime(ans.Year, ans.Month, ans.Day, ans.Hour, ans.Minute, ans.Second), new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second)); }
public void ExtractDoubleNumeric() { IEnumerable <DateTime> x = DateTimeExtractor.Extract("Wake me up 7:30 tomorrow morning and 3:00 tomorrow afternoon"); DateTime dt = x.First(); DateTime dt2 = x.Skip(1).First(); Assert.AreEqual( DateTime.Now.Date.AddDays(1).AddHours(7).AddMinutes(30), new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second)); Assert.AreEqual( DateTime.Now.Date.AddDays(1).AddHours(15), new DateTime(dt2.Year, dt2.Month, dt2.Day, dt2.Hour, dt2.Minute, dt2.Second)); }
static void Main(string[] args) { while (true) { Console.Write("{0}: Your message > ", DateTime.Now.ToString("yyyy/MM/dd HH:mm")); string s = Console.ReadLine(); foreach (DateTime dt in DateTimeExtractor.Extract(s)) { Console.WriteLine("Found {0}", dt.ToString("yyyy/MM/dd HH:mm")); } Console.WriteLine(); } }
/// <summary> /// Why do we have a public constructor here and why isn't this class an enum? /// It's because the array extractors can be configured with an array delimiter, /// something that would be impossible otherwise. There's an equivalent <seealso cref="valueOf(string)"/> /// method to keep the feel of an enum. /// </summary> public Extractors(char arrayDelimiter, bool emptyStringsAsNull, bool trimStrings, System.Func <ZoneId> defaultTimeZone) { try { foreach (System.Reflection.FieldInfo field in this.GetType().GetFields(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance)) { if (isStatic(field.Modifiers)) { object value = field.get(null); if (value is Extractor) { //JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET: //ORIGINAL LINE: instances.put(field.getName(), (Extractor<?>) value); _instances[field.Name] = (Extractor <object>)value; } } } Add(@string = new StringExtractor(emptyStringsAsNull)); Add(_long_ = new LongExtractor()); Add(_int_ = new IntExtractor()); Add(_char_ = new CharExtractor()); Add(_short_ = new ShortExtractor()); Add(_byte_ = new ByteExtractor()); Add(_boolean_ = new BooleanExtractor()); Add(_float_ = new FloatExtractor()); Add(_double_ = new DoubleExtractor()); Add(_stringArray = new StringArrayExtractor(arrayDelimiter, trimStrings)); Add(_booleanArray = new BooleanArrayExtractor(arrayDelimiter)); Add(_byteArray = new ByteArrayExtractor(arrayDelimiter)); Add(_shortArray = new ShortArrayExtractor(arrayDelimiter)); Add(_intArray = new IntArrayExtractor(arrayDelimiter)); Add(_longArray = new LongArrayExtractor(arrayDelimiter)); Add(_floatArray = new FloatArrayExtractor(arrayDelimiter)); Add(_doubleArray = new DoubleArrayExtractor(arrayDelimiter)); Add(_point = new PointExtractor()); Add(_date = new DateExtractor()); Add(_time = new TimeExtractor(defaultTimeZone)); Add(_dateTime = new DateTimeExtractor(defaultTimeZone)); Add(_localTime = new LocalTimeExtractor()); Add(_localDateTime = new LocalDateTimeExtractor()); Add(_duration = new DurationExtractor()); } catch (IllegalAccessException) { throw new Exception("Bug in reflection code gathering all extractors"); } }