2013-03-10 3 views

답변

2

나는 그런 방법이 존재하지 않는다. 말할 필요도없이 동일한 값을 가리키는 환경 변수가 둘 이상있을 수 있습니다. 이 경우 어떤 변수를 반환하겠습니까?

+0

는 :(이런 사람이 ... 아 글쎄, 생각 나는 그것을 할 자신을 해 :) – r0nny1l

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 + "%"); 
    } 
} 
+1

당신은 아마 케이스를 무시해야합니다. ToUpperInvariant()를 사용하여 모든 것을 대문자로 변환하는 것이 그 일을하는 방법입니다. –