C# Directory.Enumerate文件,带“枚举”;特别";过滤器
我需要过滤目录中的一些文件。我必须用不同的扩展名过滤不同类型的文件,但其中一个是“?b”。例子 29389.99b或382802.03b。对于其他文件,它可以很好地工作,但我如何才能过滤它? 我正在使用C# Directory.Enumerate文件,带“枚举”;特别";过滤器,c#,.net,directory,file-extension,C#,.net,Directory,File Extension,我需要过滤目录中的一些文件。我必须用不同的扩展名过滤不同类型的文件,但其中一个是“?b”。例子 29389.99b或382802.03b。对于其他文件,它可以很好地工作,但我如何才能过滤它? 我正在使用 var files = Directory.EnumerateFiles(path, "*.*", SearchOption.AllDirectories) .Where(s => s.EndsWith(".??b") || s.EndsWith(".in") || s.EndsW
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.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");
});
检查分机长度和最后一个字母
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");
});
查看这篇文章,并在下面的
目录上进行简单的google搜索。EnumerateFiles()方法
还可以查看是否有一个s.Contains
方法可用于lambda语句。您还可以查看类似的内容,例如var resultFileNames=(来自新DirectoryInfo中的fileInfo(@path).GetFiles(“.b”)选择fileInfo.Name).ToList();
看看这篇文章,并在下面的目录.EnumerateFiles()上进行简单的谷歌搜索方法
还可以查看是否存在可以在lambda语句上使用的s.Contains
方法。您还可以查看类似的内容,例如var resultFileNames=(从新DirectoryInfo(@path.GetFiles(“.b”)中的fileInfo选择fileInfo.Name)。ToList();
\w
不匹配,例如,-
。模式可能更简单:@“\…b$”
在.net 4.5项目上测试的代码。代码正在运行。\w
模式不包括所有允许的路径字符。是的,这是真的。我更正了表达式。现在,“.”模式包括所有允许的路径字符。\w
不匹配,例如,-
。模式可能简单得多:@\…b$”
在.net 4.5项目上测试的代码。代码正在运行。\w
模式不包括所有允许的路径字符。是的,这是真的。我更正了表达式。现在,“.”模式包括所有允许的路径字符。