解析包含特殊文件夹的字符串

Parsing string containing Special Folder

我允许输入自定义路径并希望默认路径为: %UserProfile%/Documents/foo,当然这需要成功解析字符串,虽然它可以在 Windows Explorer 中工作,但我想知道我是否缺少用于正确解析它的库调用或选项。

DirectoryInfo 的构造函数肯定不起作用,将 %UserProfile% 视为任何其他文件夹名称。 如果没有好的方法,我将手动解析它以将 %foo% 替换为实际的特殊文件夹位置(如果它在特殊文件夹枚举中)。

编辑: 实现我正在寻找的代码(尽管更喜欢适当的 .NET 库调用):

var path = @"%UserProfile%/Documents/foo";
var specialFolders = Regex.Matches(path, "%(?<possibleSpecial>.+)%");
foreach (var spec in specialFolders.AsEnumerable())
{
    if (Enum.TryParse<Environment.SpecialFolder>(spec.Groups["possibleSpecial"].Value, out var sf))
    {
        path = Regex.Replace(path, spec.Value, Environment.GetFolderPath(sf));
    }
 }

在使用之前先在路径上使用Environment.ExpandEnvironmentVariables

var pathWithEnv = @"%UserProfile%/Documents/foo";
var path = Environment.ExpandEnvironmentVariables(pathWithEnv);
// your code...