使用带有正则表达式的Directory.GetFiles()时出错

时间:2013-10-16 02:51:58

标签: c# regex .net getfiles illegal-characters

我正在为我自制的Windows资源管理器开发搜索功能。我使用Directory.GetFiles(string path, string searchPattern, searchOption searchOption)来做到这一点。我的问题是,当我打电话时:

string searchPattern = '"' + searchBox.Text + '"'; // searchPattern = "duck"
string path = @"D:\test";
string[] searchResults = Directory.GetFiles(path, searchPattern, System.IO.SearchOption.AllDirectories);

抛出异常:

  

“路径中的非法字符。”

这是文件结构:

D:\
---test\ (Folder)
-------duck.txt (File)

2 个答案:

答案 0 :(得分:4)

Directory.GetFiles不支持正则表达式。但它确实支持少数特殊的“通配符”字符。来自MSDN:

  

*零个或多个字符。
  ?完全为零或一个字符。

请改为尝试:

string searchPattern = '*' + searchBox.Text + '*'; // searchPattern = *duck*
string path = @"D:\test";
string[] searchResults = Directory.GetFiles(path, searchPattern, System.IO.SearchOption.AllDirectories);

答案 1 :(得分:0)

你得到“路径中的非法字符。”。,因为你的搜索模式中有"个字符

尝试

string searchPattern ="duck.txt"; 

你会找到你想要的文件

如果您只需要将文件名作为搜索模式,那么

string searchPattern =searchBox.Text +".txt"; 

如果您需要获取包含搜索文本的文件,可以使用

string searchPattern ="*" +searchBox.Text +"*";