将 Directory.GetFiles() 与正则表达式一起使用时出错
本文关键字:一起 出错 正则表达式 Directory GetFiles | 更新日期: 2023-09-27 18:35:27
我正在为我自制的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)
Directory.GetFiles
不支持正则表达式。但是,它确实支持一些特殊的"通配符"字符。从 MSDN:
*
零个或多个字符。
?
正好零个或一个字符。
试试这个:
string searchPattern = '*' + searchBox.Text + '*'; // searchPattern = *duck*
string path = @"D:'test";
string[] searchResults = Directory.GetFiles(path, searchPattern, System.IO.SearchOption.AllDirectories);
你会得到"路径中的非法字符"。 因为你在搜索模式中给出了"
字符
尝试使用
string searchPattern ="duck.txt";
你会找到你想要的文件
如果您只需要提供文件名作为搜索模式,那么
string searchPattern =searchBox.Text +".txt";
如果您需要获取包含搜索文本的文件,您可以使用
string searchPattern ="*" +searchBox.Text +"*";