【发布时间】:2013-05-05 19:59:16
【问题描述】:
我试图只删除 url 的最后一部分,它是一个 FTP URL。
假设,我有一个类似的 URL:> ftp://ftp.abc.com/public_html/somefolder/。删除最后一部分后,我应该将其命名为:ftp://ftp.abc.com/public_html/。
我尝试过使用stringByDeletingLastPathComponenet 和URLByDeletingLastPathComponent,但它们没有正确删除最后一部分。它们改变了 url 的整体外观。
例如,使用上述方法后,这是我得到的 URL 格式 ftp:/ftp.abc.com/public_html/。它删除了“ftp://”中的一个“/”,这使我的程序崩溃。
如何在不影响 URL 其余部分的情况下只删除最后一部分?
更新:
NSURL * stringUrl = [NSURL URLWithString:string];
NSURL * urlByRemovingLastComponent = [stringUrl URLByDeletingLastPathComponent];
NSLog(@"%@", urlByRemovingLastComponent);
使用上面的代码,我得到的输出是:- ftp:/ftp.abc.com/public_html/
【问题讨论】:
-
-stringByDeletingLastPathComponent确实会压缩任何双斜杠。它的文档确实明确指出它仅适用于路径,而不是 URL! -
-URLByDeletingLastPathComponent可以正常工作。对于您的上述代码示例,我唯一能看到的输出ftp:/ftp.abc.com/public_html/是输入是否与ftp:/ftp.abc.com/public_html/somefolder/类似的格式错误@ -
快速跟进:结果在 OS X 10.6(可能是 iOS 4)
-URLByDeletingLastPathComponent错误处理路径部分中的双斜杠。试图删除这样的组件会导致../被附加 -
一个随机的想法:是否有可能您从文本字段输入的 URL 实际上包含一个尾随换行符?事实证明,在 OS X 10.9 和 iOS 7 之前,最后一个字符可能是无效字符。我想这可能会搞砸路径编辑逻辑
标签: iphone ios6 ftp nsstring nsurl