I want to use functions of Path class (GetDirectoryName
, GetFileName
, Combine
,etc.) with paths in URL format with slash (/).
E
If the URI is a local file URI of the form file://whatever
then you can call string path = new Uri(whatever).LocalPath
and call the Path
methods on it. If you cannot guarantee the Uri is to a local path, you cannot guarantee components of the Uri correspond to machines, folders, files, extensions, use directories, separator characters, or anything else.
Have you considered using a combination of System.Uri, System.UriBuilder, and (if necessary) custom System.UriParser subclass(es)?
For GetDirectoryName()
, you can use
pageRoot = uri.Remove(uri.LastIndexOf('/') + 1);
I'm afraid GetDirectoryName
, GetFileName
, Combine
,etc. use Path.DirectorySeparatorChar in the definition and you want Path.AltDirectorySeparatorChar.
And since Path is a sealed class, I think the only way to go about is string replacement.You can replace Path.DirectorySeparatorChar
('\') with Path.AltDirectorySeparatorChar
('/') and Path.VolumeSeparatorChar
(':') with ":/"