使用Directory.GetFiles和C#中的regex?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (24)

我有这样的代码:

string[] files = Directory.GetFiles(path, "......", SearchOption.AllDirectories)

我想要的是返回不与开头的文件p_t_与具有扩展名PNG或JPG或GIF。我将如何做到这一点?

提问于
用户回答回答于

Directory.GetFiles不支持RegEx

默认情况下,可以做的是通过RegEx在你的档案清单上。看看这个清单:

Regex reg = new Regex(@"^^(?!p_|t_).*");

var files = Directory.GetFiles(yourPath, "*.png; *.jpg; *.gif")
                     .Where(path => reg.IsMatch(path))
                     .ToList();
用户回答回答于

不能将Regex插入参数中,它只是一个简单的字符串过滤器。尝试使用LINQ过滤后,而不是。

var files = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories)
            .Where(s => s.EndsWith(".jpg") || s.EndsWith(".png"))
            .Where(s => s.StartsWith("p_") == false && s.StartsWith("t_") == false)

扫码关注云+社区