Directory.EnumerateFiles 具有 "special" 个过滤器

Directory.EnumerateFiles with "special" filters

我需要过滤目录中的一些文件。我必须过滤具有不同扩展名的不同类型的文件,但一个是 "??b" 。例子 29389.99b 或 382802.03b。对于其他文件,它工作正常,但我该如何过滤呢? 我正在使用

var files = Directory.EnumerateFiles(path, "*.*", SearchOption.AllDirectories)
    .Where(s => s.EndsWith(".??b") || s.EndsWith(".in") || s.EndsWith(".txt"));

谢谢

您可以使用正则表达式解决它。下面的代码可以帮到你。

var files = Directory.EnumerateDirectories(path).Where(s => Regex.IsMatch(s, @"(.*)\.+.{2}b$"));

检查分机长度和最后一个字母。

var files = Directory.EnumerateFiles(path, "*.*", SearchOption.AllDirectories)
    .Where(s =>
    {
        string ext = Path.GetExtension(s);
        return ext.Length == 4 && ext.EndsWith("b")
            || s.EndsWith(".in")
            || s.EndsWith(".txt");
    });