是否存在与Environment.ExpandEnvironmentVariables方法相反的方法。
我的意思是,在给定路径时,该方法返回其EnvironmentValue对应物。
例如:
C:\用户\用户\应用程序数据\本地\ FOO \杆
应该变成:
%LOCALAPPDATA%\ FOO \杆
(为了使配置文件可移植。)
答案 0 :(得分:2)
我担心不存在这样的方法。更不用说你可以有多个环境变量指向相同的值。在这种情况下,您希望返回哪个变量?
答案 1 :(得分:1)
在被告知没有这样的事情后,我写了一个非常简单的版本。如果有人有任何建议,那就太棒了!
该方法替换它可以找到的最长的环境变量。
public static class EnvironmentExtension
{
public static string ContractEnvironmentVariables(string path)
{
path = Path.GetFullPath(path).ToUpperInvariant();
DictionaryEntry currentEntry = new DictionaryEntry("","");
foreach (object key in Environment.GetEnvironmentVariables().Keys)
{
string value = (string)Environment.GetEnvironmentVariables()[key];
if (path.Contains(value.ToUpperInvariant()) && value.Length > ((string)currentEntry.Value).Length)
{
currentEntry.Key = (string)key;
currentEntry.Value = value;
}
}
return path.Replace((string)currentEntry.Value, "%" + (string)currentEntry.Key + "%");
}
}