我需要过滤目录中的一些文件。我必须使用不同的扩展来过滤不同类型的文件,但其中一个是“?? b”。例 29389.99b或382802.03b。对于其他文件,它工作正常但我怎么能过滤这个? 我正在使用
var files = Directory.EnumerateFiles(path, "*.*", SearchOption.AllDirectories)
.Where(s => s.EndsWith(".??b") || s.EndsWith(".in") || s.EndsWith(".txt"));
由于
答案 0 :(得分:1)
您可以使用正则表达式解决它。以下代码可以帮助您。
var files = Directory.EnumerateDirectories(path).Where(s => Regex.IsMatch(s, @"(.*)\.+.{2}b$"));
答案 1 :(得分:1)
检查分机长度和最后一个字母。
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");
});