NSURL文件扩展名添加等

时间:2011-07-22 12:40:33

标签: objective-c nsstring nsurl

我收到了savePanel表格中的网址,我想做以下操作:

  • 检查是否有扩展名
  • 如果是,请将其删除
  • 添加自定义扩展程序
  • 如果没有,则添加自定义扩展程序

任何简单的方法都可以做到这一点..我尝试了类似下面的内容,但它不起作用

if ( [tmp pathExtension] != @"xxx" )
   path = [tmp stringByAppendingFormat:@"xxx"];

好的......可能的解决方案如下

NSString *path;
NSURL *filepath;
fileurl = [sheet URL];
fileurl = [fileurl URLByDeletingPathExtension];
fileurl = [fileurl URLByAppendingPathExtension:@"yyy"];
path = [fileurl path];

3 个答案:

答案 0 :(得分:7)

这可以使用NSString的方法来实现。请注意,对于字符串比较,您必须使用isEqualToString:,而不是==,它们会测试指针的相等性。

关于扩展程序使用:-(NSString *)pathExtension;。要删除扩展程序,请使用-(NSString *)stringByDeletingPathExtension;

在所有添加扩展程序的情况下,请使用例如+(NSString *)stringWithFormat:撰写新字符串。

所以:

NSString *finalString;
if([[tmp pathExtension] isEqualToString:@"xxx"]) {
    finalString = [tmp stringByDeletingPathExtension];
}
finalString = [NSString stringWithFormat:@"%@.yyy", finalString];

答案 1 :(得分:1)

@ user756245在同一页面上提供的可行解决方案的替代方法,但使用了不同的NSString方法:

NSString *finalString;
if([[tmp pathExtension] isEqualToString:@"xxx"]) {
    finalString = [tmp stringByDeletingPathExtension];
}

finalString = [finalString stringByAppendingPathExtension:@"yyy"];

答案 2 :(得分:0)

这是使用URL

的Swift 4.1的更新。
// assuming you are building an URL from string
let url = URL(string: "file.abc")!
let finalUrl = url.deletingPathExtension().appendingPathExtension("mp3")
let finalString = finalUrl.path // output "file.mp3"