Я бы использовал регулярное выражение, , особенно если возможно, что в имени файла есть несколько подчеркиваний.Затем вы можете зафиксировать год, месяц, день и вернуть DateTime
, если необходимо.Таким образом, вы можете убедиться, что вы извлекаете правильную часть имени файла, и она действительно соответствует шаблону, который вы ищете.
Для шаблона [filename_]YYYYMMDD[.fileExtension]
, я думаю что-то вроде:
^(?:.*_)?([0-9]{4})([0-9]{2})([0-9]{2})(?:\..*)?$
Тогда вашими захваченными группами будут год, месяц и день в указанном порядке.
Объяснение:
^
: началовашей строки.
(?:.*_)?
: необязательная группа без захвата, содержащая любое количество символов, за которым следует подчеркивание.
([0-9]{4})
: группа захвата, содержащая ровно четыре цифры.
([0-9]{2})
: группа захвата, содержащая ровно две цифры.
(?:\..*)?
: необязательная группа без захвата, содержащая точку, за которой следует любое количество символов.
$
: конец вашей строки.
Тем не менее, я добавлю, что если вы уверены, что ваши имена файлов имеют одно и только одно подчеркивание, а дата следует за этим подчеркиванием, код, который у вас есть, чище ивероятно будет немного быстрее, чем реGEX.Об этом следует помнить, исходя из ожидаемого набора входных данных.