Извлечь дату из имени файла с помощью Regex - PullRequest
0 голосов
/ 18 ноября 2018

У меня есть следующая структура имен:

GuidAsString/yyyy/MM/dd.zip

Пример:

e1e2e854-e1cd-4980-83bb-2a0273f904aa/2018/11/18.zip

Я бы хотел извлечь дату с помощью регулярных выражений. Regex - это не мое.

Обновление: Я пытаюсь сделать что-то вроде:

DateTime dateTime = DateTime.ParseExact(name, format, formatprovider)

и я ищу формат. Если у вас есть более элегантный способ, это было бы еще лучше.

Буду признателен за вашу помощь.

Ответы [ 3 ]

0 голосов
/ 18 ноября 2018

вы можете использовать для извлечения даты в строковом формате с помощью регулярного выражения:

var st = "e1e2e854-e1cd-4980-83bb-2a0273f904aa/2018/11/18.zip";
var st1 = Regex.Match(st,@"\d{4}/\d{2}/\d{2}").Value;

st1 = "2018/11/18", если вы хотите конвертировать в формате даты, используйте:

var date = DateTime.Parse(st1);
0 голосов
/ 18 ноября 2018

Вы легко можете найти решение с помощью некоторых манипуляций со строками. Вы можете использовать String.Split метод как;

var str = "e1e2e854-e1cd-4980-83bb-2a0273f904aa/2018/11/18.zip";
var year = str.Split('/')[1];
var month = str.Split('/')[2];
var day = str.Split('/')[3].Split('.')[0];

enter image description here

и вы можете разобрать свои части как;

var myDate = DateTime.ParseExact($"{year}{day}{month}",
                                  "yyyyddMM",
                                  CultureInfo.InvariantCulture);
0 голосов
/ 18 ноября 2018
string input = @"e1e2e854-e1cd-4980-83bb-2a0273f904aa/2018/11/18.zip";
string pattern = @"/(\d+/\d+/\d+)";
var match = Regex.Match(input, pattern);
var date = DateTime.Parse(match.Groups[1].Value);
WriteLine(date.ToShortDateString());
// Prints: 18.11.2018

Однострочник:

var date = DateTime.Parse(Regex.Match(@"e1e2e854-e1cd-4980-83bb-2a0273f904aa/2018/11/18.zip", @"/(\d+/\d+/\d+)").Groups[1].Value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...