Мне нужно знать, является ли данная строка допустимой строкой формата DateTime, потому что строка может представлять другие вещи. Я пробовал DateTime.ParseExact (somedate.ToString (формат), формат), думая, что это будет barf в недопустимом формате, но это не так.Строка содержит только заданный набор символов
Так что я хорошо разбираюсь, если строка содержит только символы «yYmMdDsShH». Что-то вроде std :: string.find_first_not_of будет работать, но System.String этого не имеет.
Я думал, что RegEx может сделать трюк, но я очень слаб с регулярными выражениями.
Обратите внимание, что Linq недоступен для этого (только для .NET 2.0).
Обновлено
Чтобы уточнить, мне нужно знать, если данная строка представляет собой формат даты и времени и не что-то еще вроде этого:
if (input == "some special value")
... // it's a special case value
else if (Environment.GetEnvironmentVariable(input))
... // it's an environment variable name
else if (IsDateTimeFormatString(input))
... // it's a date time format string
else if (input.IndexOfAny(Path.GetInvalidPathChars()) < 0)
... // it's a file path
else
throw new Exception(); // Not a valid input
Я могу ограничить строку формата DateTime только «yYmMdDsShH», или я могу добавить в него несколько разделительных символов, это зависит от меня, что разрешить или не разрешить.
Вы ищете строковые символы (yYmM .. и т. д.) или числовые значения, которые идут туда? (100720 (на сегодня)? – AllenG
Обновлено для уточнения. – Tergiver