static string JustPathNoFilename(string s) {
System.Uri uri = new System.Uri(s);
string path = uri.AbsolutePath;
string pathWithoutFilename = System.IO.Path.GetDirectoryName(path);
return pathWithoutFilename;
public static void Main()
Console.WriteLine(JustPathNoFilename("http://foo.com/bar/moo.png"));
Console.WriteLine(JustPathNoFilename("http://foo.com/bar/moo%2epng"));
Console.WriteLine(JustPathNoFilename("http://foo.com/bar/moo.png#not.this"));
Console.WriteLine(JustPathNoFilename("http://foo.com/bar/moo.png?key=not.this"));
Console.WriteLine(JustPathNoFilename("http://foo.com/bar/moo.png#sub/not.this"));
Console.WriteLine(JustPathNoFilename("http://foo.com/bar/moo.png?key=sub/not.this"));