簡體   English   中英

使用正則表達式從文件名中提取日期

[英]Extract Date from file name using Regex

我具有以下名稱結構:

GuidAsString/yyyy/MM/dd.zip

一個例子:

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

我想使用正則表達式提取日期。 正則表達式不是我的事。

更新:我正在嘗試做類似的事情:

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

我正在尋找格式。 如果您有更優雅的方式,那就更好了。

多謝您的協助。

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);

您可以使用正則表達式以字符串格式提取日期:

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);

您可以通過一些字符串操作輕松找到解決方案。 您可以使用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];

在此處輸入圖片說明

您可以像這樣解析您的部分;

var myDate = DateTime.ParseExact($"{year}{day}{month}",
                                  "yyyyddMM",
                                  CultureInfo.InvariantCulture);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM