У меня нет большого опыта с регулярными выражениями, и я хотел исправить это.Я решил создать приложение, которое принимает имя каталога, сканирует все файлы (все серийные номера которых увеличиваются, но слегка различаются по именам. Пример: episode01.mp4
, episode_02.mp4
, episod03.mp4
, episode04.rmvb
и т. Д.)
Приложение должно сканировать каталог, найти номер в каждом имени файла и переименовать файл с расширением в общий формат (episode01.mp4
, episode02.mp4
, episode03.mp4
, episode04.rmvb
и т. Д.).
У меня есть следующий код:
Dictionary<string, string> renameDictionary = new Dictionary<string,string>();
DirectoryInfo dInfo = new DirectoryInfo(path);
string newFormat = "Episode{0}.{1}";
Regex regex = new Regex(@".*?(?<no>\d+).*?\.(?<ext>.*)"); //look for a number(before .) aext: *(d+)*.*
foreach (var file in dInfo.GetFiles())
{
string fileName = file.Name;
var match = regex.Match(fileName);
if (match != null)
{
GroupCollection gc = match.Groups;
//Console.WriteLine("Number : {0}, Extension : {2} found in {1}.", gc["no"], fileName,gc["ext"]);
renameDictionary[fileName] = string.Format(newFormat, gc["no"], gc["ext"]);
}
}
foreach (var renamePair in renameDictionary)
{
Console.WriteLine("{0} will be renamed to {1}.", renamePair.Key, renamePair.Value);
//stuff for renaming here
}
Одна проблема в этом коде состоит в том, что он также включает файлы, которые не имеют номеров в renameDictionary
.Было бы также полезно, если бы вы указали на любые другие ошибки, с которыми мне следует быть осторожными.
PS: я предполагаю, что имена файлов будут содержать только числа, соответствующие серийным номерам (ничего подобного cam7_0001.jpg
)