public static string GetSanitizedPath(string Path)
{
var Parts = new Stack<string>();
foreach (var Part in Path.Replace('\\', '/').Split('/'))
{
switch (Part)
{
case "": if (Parts.Count == 0) Parts.Push(""); break;
case ".": break;
case "..": if (Parts.Count > 0) Parts.Pop(); break;
default: Parts.Push(Part); break;
}
}
return String.Join("/", Parts.Reverse());
}