2015-08-22 109 views
-2

我有13個.srt文件。他們每個人都有標題「2x--」「 - 」是插曲字幕的數量。我有一個代碼可以記錄關於每個.srt文件的所有信息(用於foreach),但我想將每個.srt文件設置爲一個足夠的電影文件(只需將.srt文件的名稱更改爲電影名稱) 。例如:我有一個文件夾,其中是一個.srt文件和一個.mp4文件。調用.srt文件:示例 - 2x01(.srt),電影文件名爲Example.S01E01(.mp4)。所以,我想讓我的應用程序檢測數量「2x--」(2個)之後,發現一個適當的電影(在這種情況下,這將是「E」 「S01E--」後的數字),我希望你明白我的問題,我不知道我怎麼可以跟蹤它...越來越多的文件標題

This is how I see it. [IMAGE]

+0

這很明顯,但堆棧溢出不是廣泛的模糊問題要求*的想法*的地方。另請參閱[help] –

+0

如果我想成爲一名想要準備粘貼代碼的leecher,那麼這會更好嗎? – Alexandro

+1

當然不是,但它不會使*這個問題更多的話題。嘗試一些東西,甚至正則表達式(例如),如果你不能使它工作,然後回來的代碼和失敗的嘗試... –

回答

1

你可能談論的正則表達式,爲你的字幕文件名確實有像"<title> - 2X<episode>.srt"一個共同的模式,你想這樣做轉換到另一個圖案,"<title>.S01E<episode>.mp4"

下面的代碼的伎倆。該title組包含的任何字符直到找到的- 2x序列則獲得episode組爲一個或多個數字。

foreach (var fullPath in Directory.GetFiles("*.srt")) 
{ 
    // "Example - 2x01.srt" 
    var subtitle = Path.GetFileName(fullPath); 
    var match = Regex.Match(subtitle, @"(?<title>.*?) - 2x(?<episode>\d+)\."); 
    if (match.Success) 
    { 
     // "Example.S01E01.mp4" 
     var movie = String.Format("{0}.S01E{1}.mp4", 
      match.Groups["title"].Value, 
      match.Groups["episode"].Value); 
     Console.WriteLine(movie); 
    } 
} 
+0

謝謝你的回覆,它的工作原理。但是當字幕名稱不同時我該怎麼辦?例如,其中一個是「Example - 2x01.srt」,另一個是「Example - 2x01 - Cool.HDTV.ASAP.en.srt」,我無法通過正則表達式做到這一點。 – Alexandro