2015-08-22 110 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