我正在使用此代码:
var list = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, _globalSetting.CompanyCode + "trn*.???", SearchOption.TopDirectoryOnly).ToList();
foreach (var listitem in list)
{
listBox_Files.Items.Add(Path.GetFileName(listitem));
}
但它给了我超过我的需要。我希望它只给我3个扩展名的文件,如果可以的话,只有那些带有数字的文件。我试过了???上面但它给了我这个:
WEBTRN25.000
WEBTRN25.001
WEBTRN25.000_copy
WEBTRN34.ABC
我也尝试了###但是没有给我任何结果。
这是我希望它回馈的内容:
WEBTRN25.000
WEBTRN25.001
有什么建议吗?
答案 0 :(得分:3)
您可以将Regex表达式与Linq子句组合在哪里
Regex r = new Regex(@"^\.\d\d\d$");
var list = Directory.EnumerateFiles(AppDomain.CurrentDomain.BaseDirectory,
_globalSetting.CompanyCode + "trn*.*",
SearchOption.TopDirectoryOnly)
.Where(x => r.IsMatch(Path.GetExtension(x)));
请注意,我已使用EnumerateFiles替换了对GetFiles的调用。此方法允许在读取整个目录列表之前启动集合的枚举。因此,EnumerateFiles(如果目录中有许多文件)可能更有效。
答案 1 :(得分:0)
您可以使用正则表达式来确保文件名以[dot then three numbers]
结尾.*\\.[0-9]{3}$
或类似的东西
答案 2 :(得分:0)
尝试使用LINQ:
var list = Directory.GetFiles("<DIRECTORY>").Where(a=> Regex.IsMatch(a, @"\d\d\d")).ToList().Foreach((b)=> Path.GetFileName(b));
。你不需要foreach循环