【问题标题】:Retrieve filename from NSURL从 NSURL 检索文件名
【发布时间】:2013-11-26 16:03:38
【问题描述】:

我有一个网址

http://www.hdwallpapers.in/walls/honda_v4_concept_widescreen_bike-wide.jpg

我想提取文件名为“honda_v4_concept_widescreen_bike-wide.jpg”

我该怎么做?

【问题讨论】:

    标签: nsurl


    【解决方案1】:

    下面的代码应该可以工作。更新了它,所以我删除了最上面的声明。我本可以使用 C++ 中的 NSString 与 const char * 或 std::string,但认为 C 字符指针非常适合这种情况。

    还对其进行了改进,使其具有自己的简洁功能:

    -(NSString*) extractFile:(const char*) url 
    {
        NSURL *yourURL = [NSURL URLWithString:
                         [NSString stringWithCString:url 
                                     encoding:NSUTF8StringEncoding]];
        return [yourURL lastPathComponent];
    }
    

    使用:

    const char *path_ = "http://www.hdwallpapers.in/walls/honda_v4_concept_widescreen_bike-wide.jpg";
    NSLog(@"\t\tYour Extracted file: \n\t%@", [self extractFile:path_]);
    

    【讨论】:

    • 我强烈推荐反对这里的第一个代码sn-p。第二个很好
    • @MikeAbdullah 为什么会这样?
    • 1.它假装一个 URL 是一个路径;他们不是。如果 URL 碰巧在路径之后有任何组件(即参数、片段或查询),那会搞砸这个例程
    • 2.不太重要,但仍然是创建一个新的中间字符串对象,这是不必要的浪费
    • NSURL.lastPathComponent 甚至可以用于fileReferenceURL 风格的 URL。改用absoluteString 会导致“id=65134...”
    【解决方案2】:

    只需使用基本名称basename()函数

    $url = http://www.fullhdwallpapers.in/wp-content/uploads/2017/01/Logan-Movie-Kid-2017-680x425.jpg
    
    echo basename($url); 
    

    【讨论】:

    • 这似乎是 PHP - 作者指定他们有一个 NSURL,这意味着他们想要 Swift 或 Objective-C 中的答案。
    【解决方案3】:

    斯威夫特 3:

    let urlString = "http://www.hdwallpapers.in/walls/honda_v4_concept_widescreen_bike-wide.jpg"
    if let url = URL(string: urlString) {
      print("file name: \(url.lastPathComponent)")
    } else {
      print("error - not a valid url!")
    }
    

    【讨论】:

      【解决方案4】:

      下面的代码有效。 absoluteString 在另一个答案中被推荐,但如果文件名中有(例如)空格,它就不能正常工作。

      NSString *JPEGfilename = [[yourURL path] lastPathComponent];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-09
        • 2018-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-26
        • 2021-12-31
        相关资源
        最近更新 更多