【问题标题】:Extract directory name and leaf name from a given URL从给定的 URL 中提取目录名称和叶名称
【发布时间】:2013-12-03 19:50:21
【问题描述】:

示例 URL1: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) 作为叶子名称。

但这并不是在所有情况下都有效。我可以知道是否有更好的方法来做到这一点?

【问题讨论】:

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


    【解决方案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
    

    另外,如果您希望在目录名中保留最后一个 /,您只需删除 -1

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

    【讨论】:

    • 当 URL 中没有目录名称或叶名称时,我遇到了问题。我在“子字符串”函数中遇到错误
    猜你喜欢
    • 2012-05-19
    • 2019-12-17
    • 2016-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    相关资源
    最近更新 更多