NSURL获取路径和文件名问题

截取NSURL的路径

NSURL的path属性,该属性可直接提取url中域名后面的路径,但有时候取的路径和文件名不正确。
举例1:(正常获取)

    NSString *urlStr = @"https://mvvido5.meituta.com/56ea0e90b2653.mp4";
    NSURL *url = [NSURL URLWithString:urlStr];
    NSLog(@"%@",url.path);

结果:/56ea0e90b2653.mp4

举例2:(异常情况)
下面是异常情况,即最后一个path的/后面带有非字母非数字的字符,则会忽略后面的路径

urlStr = @"http://v11-tt.ixigua.com/776216c056/5c8dcaf0/video/m/22050ab42a/?rc=M25mZ.mp4";
url = [NSURL URLWithString:urlStr];
NSLog(@"%@",url.path);

结果:/776216c056/5c8dcaf0/video/m/22050ab42a
没有包含"?rc=M25mZ.mp4"这部分,就是因为前面的?问题。所以这种方式获取路径不保险。

截取文件名

常规做法,直接取得url的lastPathComponent即可

NSString *urlStr = @"https://mvvido5.meituta.com/56ea0e90b2653.mp4";
NSURL *url = [NSURL URLWithString:urlStr];
[url lastPathComponent];
但遇到url的路径最后一个‘ / ’后带有非字母非数字时,这个方法就不灵了。所以使用截取字符的办法。
+ (NSString *)fileNameWithURL:(NSURL *)url {
    //使用截取的方法获取url的文件名
    NSString *path = url.absoluteString;
    NSRange range = [path rangeOfString:@"/" options:(NSBackwardsSearch)];
    if( range.location != NSNotFound ){
       //以下方法会包含起始索引的字符,所以+1
        return [path substringFromIndex:range.location+1];
    }
    
    return @"";
}

[docDir stringByAppendingPathComponent:pathSuffix]; 若pathSuffix 最后带有/ ,结果上不会展示出来

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容