从给定的URL中提取目录名称和叶子名称

时间:2013-12-03 19:50:22

标签: c# visual-studio-2010 url uri string-formatting

示例网址1:http://example/dirname/subdirname/leafname         URL2:http://example:5678/dirname/leafname

从上面的示例中,目录名称是“dirname / subdirname”& “dirname”和                         叶名称是“leafname”& “leafname”

基本上,目录名称是最后一个'/'之前的所有内容,而叶名称是绝对路径中最后一个'/'之后的所有内容

我尝试使用AbsolutePath.substring(1, AbsolutePath.LastIndexof('/')-1)作为目录名,使用AbsolutePath.substring(AbsolutePath.LastIndexof('/')+1, AbsolutePath.Length - DirectoryName.Length)作为Leaf名称。

但是这并不适用于所有情况。我能否知道是否有更好的方法来做到这一点?

1 个答案:

答案 0 :(得分:1)

你几乎得到了它。目录名称是正确的,但您需要从0开始而不是1(否则您最终会得到ttp://

string directory = AbsolutePath.Substring(1, AbsolutePath.LastIndexOf('/') - 1);

对于叶子名称,你不需要第二个参数:

string leaf = AbsolutePath.Substring(AbsolutePath.LastIndexOf('/') + 1);

所以用你的例子:

string AbsolutePath = "http://example/dirname/subdirname/leafname";
string directory = AbsolutePath.Substring(1, AbsolutePath.LastIndexOf('/') - 1); //From http to subdirname
string leaf = AbsolutePath.Substring(AbsolutePath.LastIndexOf('/') +  1); //leafname

另外,如果您希望将最后一个/保留在dirname中,则只需删除-1

AbsolutePath.Substring(1, AbsolutePath.LastIndexOf('/'));