C# 获取目录中只有3个扩展名和数字的文件列表

C# 获取目录中只有3个扩展名和数字的文件列表,c#,getfiles,C#,Getfiles,我正在使用以下代码: var list = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, _globalSetting.CompanyCode + "trn*.???", SearchOption.TopDirectoryOnly).ToList(); foreach (var listitem in list) { listBox_Files.Items.Add(Path.GetFileName(lis

我正在使用以下代码:

  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

有什么建议吗?

您可以使用正则表达式来确保文件名以[dot then three number]结尾

.*\\.[0-9]{3}$

或者类似的

您可以使用正则表达式来确保文件名以[dot then three number]结尾

.*\\.[0-9]{3}$

或者类似的

您可以使用正则表达式来确保文件名以[dot then three number]结尾

.*\\.[0-9]{3}$

或者类似的

您可以使用正则表达式来确保文件名以[dot then three number]结尾

.*\\.[0-9]{3}$

或者类似的东西

您可以将正则表达式与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)));

请注意,我已将您对GetFiles的调用替换为EnumerateFiles。此方法允许在读取整个目录列表之前启动集合的枚举。因此,EnumerateFiles(如果目录中有许多文件)可能会更有效。

可以将正则表达式与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)));

请注意,我已将您对GetFiles的调用替换为EnumerateFiles。此方法允许在读取整个目录列表之前启动集合的枚举。因此,EnumerateFiles(如果目录中有许多文件)可能会更有效。

可以将正则表达式与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)));

请注意,我已将您对GetFiles的调用替换为EnumerateFiles。此方法允许在读取整个目录列表之前启动集合的枚举。因此,EnumerateFiles(如果目录中有许多文件)可能会更有效。

可以将正则表达式与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)));
请注意,我已将您对GetFiles的调用替换为EnumerateFiles。此方法允许在读取整个目录列表之前启动集合的枚举。因此,枚举文件(如果目录中有许多文件)可能更有效。

尝试使用LINQ:

var list=Directory.GetFiles(“”)。其中(a=>Regex.IsMatch(a,@“\d\d”)).ToList().Foreach((b)=>Path.GetFileName(b))。您不需要foreach循环

尝试使用LINQ:

var list=Directory.GetFiles(“”)。其中(a=>Regex.IsMatch(a,@“\d\d”)).ToList().Foreach((b)=>Path.GetFileName(b))。您不需要foreach循环

尝试使用LINQ:

var list=Directory.GetFiles(“”)。其中(a=>Regex.IsMatch(a,@“\d\d”)).ToList().Foreach((b)=>Path.GetFileName(b))。您不需要foreach循环

尝试使用LINQ:


var list=Directory.GetFiles(“”)。其中(a=>Regex.IsMatch(a,@“\d\d”)).ToList().Foreach((b)=>Path.GetFileName(b))。您不需要foreach循环,这是使用简单的
searchPattern
参数无法实现的。你可以为这个想法写一个快速的正则表达式。类似这样的内容:
/^.+\.[0-9]{3}$/
+1@Diamondo25尝试获取所有文件,然后使用linq和正则表达式进行筛选。使用简单的
搜索模式
参数是不可能的。你可以为这个想法写一个快速的正则表达式。类似这样的内容:
/^.+\.[0-9]{3}$/
+1@Diamondo25尝试获取所有文件,然后使用linq和正则表达式进行筛选。使用简单的
搜索模式
参数是不可能的。你可以为这个想法写一个快速的正则表达式。类似这样的内容:
/^.+\.[0-9]{3}$/
+1@Diamondo25尝试获取所有文件,然后使用linq和正则表达式进行筛选。使用简单的
搜索模式
参数是不可能的。你可以为这个想法写一个快速的正则表达式。类似这样:
/^.+\.[0-9]{3}$/
+1@Diamondo25尝试获取所有文件,然后使用linq和正则表达式进行筛选。这仍然为我提供了WEBTRN25.000\u副本,但我使用
Path.GetExtension(listitem)检查了扩展名的长度。长度==4
并且组合有效。请刷新答案,我已经更新了正则表达式的模式。原来的PATS没有考虑GETExpRebug()返回的扩展前的点,这仍然给了我WebTrn25.000的副本,但是我检查了扩展名的长度:<代码>路径.GETFROM(ListITEM)。长度=4</CODE >并且组合工作。请刷新答案,我已经更新了正则表达式的模式。原来的PATS没有考虑GETExpRebug()返回的扩展前的点,这仍然给了我WebTrn25.000的副本,但是我检查了扩展名的长度:<代码>路径.GETFROM(ListITEM)。长度=4</CODE >并且组合工作。请刷新答案,我已经更新了正则表达式的模式。原来的PATS没有考虑GETExpRebug()返回的扩展前的点,这仍然给了我WebTrn25.000的副本,但是我检查了扩展名的长度:<代码>路径.GETFROM(ListITEM)。长度=4</CODE >并且组合工作。请刷新答案,我已经更新了正则表达式的模式。原始模式不考虑在GETExpExvice()返回的扩展前的点。