我遇到了Uri构造函数的问题。结果在基线路径是否以斜线结束时有所不同。
var baseWithSlash = new Uri("c:\\Temp\\");
var baseNoSlash = new Uri("c:\\Temp");
var relative = "MyApp";
var pathWithSlash = new Uri(baseWithSlash, relative); // file:///c:/Temp/MyApp
var pathNoSlash = new Uri(baseNoSlash, relative); // file:///c:/MyApp
即使基本路径中没有斜杠,第一个结果也是我期望的结果。
我的主要问题是基本路径来自用户输入。
即使用户指定的路径没有尾随斜杠,获得正确结果的最佳方法是什么?
答案 0 :(得分:9)
这是IMO的预期。毕竟,考虑相对于
的“hello.jpg”的URI http://foo.com/site/index.html
这是
http://foo.com/site/hello.jpg
正确?
现在,如果您知道您的用户正在输入表示目录的URI,则可以确保该字符串末尾有斜杠。如果您不知道他们是否输入了目录名,则会出现问题。如果没有一个斜线已经为你工作,那么只会添加一个斜线吗?
string baseUri = new Uri(userUri + userUri.EndsWith("\\") ? "" : "\\");
这是假设(基于你的例子)他们将使用反斜杠。根据您的确切情况,您可能还需要处理正斜杠。
答案 1 :(得分:0)
确保第一部分有一个斜杠(即:检查它)。