Удаление% 20 из относительного пути URI - PullRequest
20 голосов
/ 18 апреля 2011

Я генерирую относительный путь из одного каталога в другой. Если свойство OutputDirectoryName является каталогом, содержащим пробелы, пробелы кодируются с использованием% 20, а не пробела. Я создаю относительный путь к папке Windows, поэтому я должен иметь свой относительный путь, используя пробелы. Есть ли чистый способ указать, как кодируется URI? Я знаю, что мог бы сделать быструю замену наlativePath.ToString (), но мне интересно, есть ли лучшая реализация. Спасибо.

public string GetOutputDirectoryAsRelativePath(string baseDirectory)
{
    Uri baseUri = new Uri(baseDirectory);
    Uri destinationUri = new Uri(OutputDirectoryName);
    Uri relativePath = baseUri.MakeRelativeUri(destinationUri);
    return relativePath.ToString();
}

Ответы [ 4 ]

37 голосов
/ 18 апреля 2011

Использовать Uri.UnescapeDataString?

http://msdn.microsoft.com/en-us/library/system.uri.unescapedatastring.aspx

2 голосов
/ 03 апреля 2012
string sRelativeFilePath = Uri.UnescapeDataString(new Uri(sAbsolutePath + "\\", false).MakeRelative(new Uri(filename)));
2 голосов
/ 18 апреля 2011
1 голос
/ 18 апреля 2011

Попробуйте посмотреть на Server.UrlDecode: http://msdn.microsoft.com/en-us/library/6196h3wt.aspx

Символ пробела - не единственный, который закодирован.

...