2015-06-17 70 views
0

我有一個簡單的問題可能,但無法弄清楚如何以'安全的方式'實現這一點。我有很多文件名,其中包含日期和時間,我需要做的是從中提取年份,月份和日期,然後將它插入到sql server數據庫到datetime字段。不幸的是,我不能指出該文件的權利,並告訴這個數字是在這個位置上,因爲日期內的位數正在改變嗎?你知道一些好方法嗎?從文件獲取日期並將其放到sql server

例子:

xxxxxxxxxxxxxxx-yyy-**2015_5_6**-23_20_12_132.csv ' have to take 2015_5_6 
rrrrrrrrrr-tttttttt-**2015_11_12**-23_20_12_1.csv ' have to take 2015_11_12 
fffffff-eeeeee-**2015_4_28**-20_45_0_671.csv   ' have to take 2015_4_28 
+0

是*包含在文件名或你剛纔用它來突出你所需要的文本? – sblandin

+0

我的恥辱! *不能在Windows文件名內;-) – sblandin

+0

沒有星星對不起,我犯了錯誤 – Arie

回答

0

你可以用正則表達式實現它

Dim fileNames As String() = {"xxxxxxxxxxxxxxx-yyy-2015_5_6-23_20_12_132.csv", "rrrrrrrrrr-tttttttt-2015_11_12-23_20_12_1.csv", "fffffff-eeeeee-2015_4_28-20_45_0_671.csv"} 

    Dim rx As New System.Text.RegularExpressions.Regex("-(\d+_\d+_\d+)-") 

    Dim matches As System.Text.RegularExpressions.MatchCollection 

    For Each fileName As String In fileNames 
     matches = rx.Matches(fileName) 

     Console.WriteLine(matches(0).Groups(1)) 
    Next 
+0

這也可以,如果數字的數字將不同,例如一天(29)或秒也可以(59)它總是選擇正確的日期?有沒有其他的方式做沒有正則表達式? – Arie

+0

如果我只有一個字符串如何做到這一點,而不是列表? – Arie

+0

第一條評論:是正則表達式將匹配由下劃線分隔的至少一個數字的任何序列,由兩個分隔的「 - 」字符包圍。不過,我想你只需要日期部分,提供的表達式不能匹配秒。在你的問題例子中,你沒有提到秒。 – sblandin

相關問題