示例网址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名称。
但是这并不适用于所有情况。我能否知道是否有更好的方法来做到这一点?
答案 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('/'));