假设我有一个像“ .vcproj; .csproj;*.sln”这样的字符串,并且我想在一个目录中显示这些类型的所有文件...... Windows 一直通过打开文件对话框来执行此操作。
我知道,Directory.GetFiles
但它只允许我运行给定的搜索模式,所以我必须拆分我的输入,然后循环遍历每个。
在所有打开文件对话框之后,是否没有内置功能可以做到这一点?
.NET 2 所以没有 LINQ 的聪明才智是可用的!
试试这个方法:
string[] formats = {".jpg", ".png", ".txt"};
var files = Directory.GetFiles("C:\\");
var neededFiles = files.
Where(file => formats.Any(file.EndsWith)).
ToArray();
或者,对于 .NET 2.0:
var desiredFiles = new List<string>(files.Length);
foreach (var file in files)
{
foreach (var format in formats)
if (file.EndsWith(format))
{
desiredFiles.Add(file);
break;
}
}
您可以使用垂直管道'|' 对于RegEx 交替。我认为您的最终代码应类似于:
string input_files = ".vcproj;.csproj;*.sln";
string search_for = input_files.Replace(".","\.").Replace(";","|")
Directory.GetFiles("/path/to/directory",search_for)
我从未在 .NET 中进行过任何编码,因此如果我的语法错误,我深表歉意。显然,如果您的初始搜索词字符串以有效的正则表达式形式开始,您可以节省一些时间。