2011-10-12 49 views
0

我有字符串這樣下面....如何分割字符串獲取日期僅

string a = backup-2011-10-12_17-16-51.zip 

我怎麼可以拆分上面的字符串,這樣只能得到這部分2011-10-12

對於我已經試過低於這個,但我不知道如何準確分割字符串這樣

2011-10-12

string[] getfiledate = a.Split(new[] { '.', '-','_' }); 

將如何分割一個串任何一個請幫助.. .....

提前很多感謝..

+1

如果你需要做的就是字面上檢索該字符串完全相同的日期,你可以使用'String.Substring(7,10)',它將抓取從索引7開始的連續10個字符。但是我懷疑你想要一個更通用的解決方案。所以:字符串總是保證以'backup-'開始? –

+0

@djacobson是字符串總是以備份開始-......更改只在日期... –

+0

猜猜這是解決它,然後。 –

回答

4

如果字符串總是相同的長度,只是使用

a.Substring(7,10) 
3

一個正則表達式將是有益的在這裏。

(\d{4}-\d{2}-\d{2}) 
+0

我怎樣才能得到日期部分... –

+0

這只是日期部分,除非時間部分可以有一個4位小時。使用像:'Regex.Match(a,「\ d {4} - \ d {2} - \ d {2}」)。Value' – Jimmy

0

如果你能想到的是正確的格式所有的時間,這將工作

string a = "backup-2011-10-12_17-16-51.zip"; 
var temp = a.Replace("backup-", String.Empty); 
temp = temp.Substring(0, temp.IndexOf('_')); 
0

非常快速和骯髒的

string a = "backup-2011-10-12_17-16-51.zip"; 
string g = a.Replace("backup-", string.Empty); 
string k = g.Remove(g.IndexOf("_")); 
2

這是我的個人偏好orite:

DateTime dt = DateTime.ParseExact("backup-2011-10-12_17-16-51.ip", "backup-yyyy-dd-MM_HH-mm-ss.ip", null); 

這避免了串計算,但如果你會發現我不得不從拉鍊,因爲時區計算ž刪除的Z在你的例子是GMT偏移......如果你能避免Z,那麼這個工作非常好。

編輯用於更真棒答案

使用@和\逃離Z:

DateTime dt = DateTime.ParseExact("backup-2011-10-12_17-16-51.zip", @"backup-yyyy-dd-MM_HH-mm-ss.\zip", null);