gpt4 book ai didi

c# - 使用通配符解析规范路径

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:15:47 25 4
gpt4 key购买 nike

我正在编写 C# 函数来检索一些匹配模式的文件。

输入:C:\abc*\abc?\testfile.*
输出:所有匹配的文件。

我以为我可以通过递归来实现。但这并不容易:(

你有好的算法吗?

更新:
我做到了。谢谢基伦 :)

void PrintAllFiles(DirectoryInfo currentDir, 
string currentPattern, string nextPatten)
{
DirectoryInfo[] dis = currentDir.GetDirectories(currentPattern);

if (dis.Length > 0)
{
string[] remainPattern = nextPatten.Split("\\".ToCharArray());
if (remainPattern.Length > 0)
{
foreach (DirectoryInfo di in dis)
{
PrintAllFiles(di, remainPattern.First(),
string.Join("\\", remainPattern.Skip(1).ToArray()));
}
}
}

FileInfo[] fis = currentDir.GetFiles(currentPattern);
foreach (FileInfo fi in fis)
{
Console.WriteLine(fi.DirectoryName + "\\" + fi.Name);
}
}

最佳答案

最简单的方法是使用递归;您将首先获取基本文件夹 (C:\),然后将 C:\ 作为当前路径传递,将 abc* 传递给“当前模式”参数,然后将 abc?\testfile.* 到“下一个模式”参数。

如果该方法找到匹配的文件夹,比如“c:\abc123”:它会再次调用该方法,将 C:\abc123 作为当前路径,abc? 作为“当前模式”,testfile.* 作为“下一个模式”。

当你没有更多的模式可以匹配时,你可以停止递归并声明成功:)

希望对您有所帮助。

关于c# - 使用通配符解析规范路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3306445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com