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