正则表达式收缩Path.Combine相对于绝对

Bra*_*ian 0 .net c# regex

我有2个文件路径:

绝对:

/Content/assets2/otherfolder/another/this/
Run Code Online (Sandbox Code Playgroud)

相对的:

../../../../assets/img/logo.gif
Run Code Online (Sandbox Code Playgroud)

当我做Path.Combine(绝对,相对)我得到:

/Content/assets2/otherfolder/another/this/../../../../assets/img/logo.gif
Run Code Online (Sandbox Code Playgroud)

哪个工作正常,但我想得到的:

/Content/assets/img/logo.gif
Run Code Online (Sandbox Code Playgroud)

我需要一个正则表达式或代码,用相应的文件夹删除"../":

/Content/assets2/otherfolder/another/this/../../../../assets/img/logo.gif
/Content/assets2/otherfolder/another/../../../assets/img/logo.gif
/Content/assets2/otherfolder/../../assets/img/logo.gif
/Content/assets2/../assets/img/logo.gif
Run Code Online (Sandbox Code Playgroud)

最后进入:

/Content/assets/img/logo.gif
Run Code Online (Sandbox Code Playgroud)

dri*_*iis 7

你不需要正则表达式.实际上,我认为在Regex中以可靠的方式定义是不可能的.而是使用Path.GetFullPath:

string combined = Path.Combine(path1, path2);
string prettyPath = Path.GetFullPath(combined);
Run Code Online (Sandbox Code Playgroud)