[英]Error when using Directory.GetFiles() with regex
我正在为自己的Windows Explorer开发搜索功能。 我使用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 +"*";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.