private static TimePoint AnnotateToTimePoint(string str) { if (str == "" || str == "YMDHMS") { return(null); } Regex pointRegex = new Regex(@"(?<year>[0-9]*)Y(?<month>[0-9]*)M(?<day>[0-9]*)D(?<hour>[0-9]*)H(?<minute>[0-9]*)M(?<second>[0-9]*)S"); Match match = pointRegex.Match(str); if (match == null) { return(null); } TimePoint ret = new TimePoint(); string[] names = { "year", "month", "day", "hour", "minute", "second" }; for (int i = 0; i < names.Length; i++) { string val = match.Groups[names[i]].Value; if (val != "") { switch (i) { case 0: ret.setYear(Convert.ToInt32(val)); break; case 1: ret.setMonth(Convert.ToInt32(val)); break; case 2: ret.setDay(Convert.ToInt32(val)); break; case 3: ret.setHour(Convert.ToInt32(val)); break; case 4: ret.setMinute(Convert.ToInt32(val)); break; case 5: ret.setSecond(Convert.ToInt32(val)); break; } } } return(ret); }