C#文件列表名称比较

Ser*_*dze 2 c# filenames

对于我的编码技巧,我有一个简单但非常艰巨的任务.

基本上我有一个任务来解析特定文件夹中的所有文件名(这执行正常)但是我必须比较这些文件名并选择文件名特定部分中具有最新(最大)编号的文件名.一个例子:

0074-105-NVK.1.p7.ver.1.pdf
0074-105-NVK.1.p7.ver.2.pdf
0074-105-NVK.1.p7.ver.3.pdf
Run Code Online (Sandbox Code Playgroud)

我感兴趣的部分是" ver.1 ",程序应选择最高的那个并删除其他文件.我真的不知道如何实现这个文件名比较.

Dmi*_*nko 5

我建议在正则表达式的帮助下提取版本信息并按此版本排序:

  string[] files = new string[] {
     "0074 - 105 - NVK.1.p7.ver.1.pdf",
     "0074 - 105 - NVK.1.p7.ver.2.pdf",
     "0074 - 105 - NVK.1.p7.ver.3.pdf", };

  string pattern = @"ver\.(?<version>[0-9]+(\.[0-9]+)*)[^0-9]+$";

  var result = files
    .Select(file => new {
      name = file,
      ver = new Version(Regex.Match(file, pattern).Groups["version"].Value + ".0")
    })
    .OrderByDescending(item => item.ver)
    .Select(item => item.name)
    .FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)