Удалить ".." из строкового представления URL - PullRequest
4 голосов
/ 07 декабря 2011

Если у вас есть путь к файловой системе, вы можете удалить «..» (а также удалить предыдущий компонент пути) с помощью селектора stringByResolvingSymlinksInPath. Как я могу добиться того же для URL? Например, я начинаю с, скажем:

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

Который мне нужно преобразовать в:

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

Ответы [ 2 ]

7 голосов
/ 07 декабря 2011

Для URL используйте метод NSURL:

- (NSURL *)standardizedURL

Возвращает новый 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
2 голосов
/ 07 декабря 2011

А как насчет следующего?

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

Если вы хотите NSURL вместо NSString, удалите вызов на absoluteString.

...