从URL的字符串表示中删除“..”

时间:2011-12-06 20:52:45

标签: iphone path nsurl

如果您有文件系统路径,则可以使用stringByResolvingSymlinksInPath选择器删除“..”(并删除先前的路径组件)。如何为URL实现相同的功能?例如,我开始说:

www.example.com/themes/themeA/../common/assetA.png

我需要转换为:

www.example.com/themes/common/assetA.png

2 个答案:

答案 0 :(得分:7)

对于URL,请使用NSURL方法:

- (NSURL *)standardizedURL

返回一个新URL,该URL指向与原始URL相同的资源,并且是绝对路径。

示例:

NSString *s  = @"www.example.com/themes/themeA/../common/assetA.png";
NSURL    *u  = [NSURL URLWithString:s];
NSURL    *su = [u standardizedURL];
NSLog(@"su: %@", su);

NSLog输出:

su: www.example.com/themes/common/assetA.png

答案 1 :(得分:2)

以下情况如何?

NSString* resolved_url 
    = [[[NSURL URLWithString: @"www.example.com/themes/themeA/../common/assetA.png"] standardizedURL] absoluteString]; 

如果您想要NSURL而不是NSString,请移除对absoluteString的通话。