Verwijder ".." uit tekenreeksrepresentatie van URL

Wanneer u een bestandssysteempad hebt, kunt u een ".." verwijderd (en ook het vorige padcomponent verwijderd) met behulp van de stringByResolvingSymlinksInPath selector. Hoe kan ik hetzelfde bereiken voor een URL? Ik begin bijvoorbeeld met, zeg:

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

Wat ik moet converteren naar:

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

2 antwoord

Gebruik de NSURL-methode voor een URL:

- (NSURL *)standardizedURL

Retourneert een nieuwe URL die verwijst naar dezelfde resource als de oorspronkelijke URL en is een absoluut pad.

Voorbeeld:

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

NSLog-uitvoer:

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

Hoe zit het met het volgende?

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

Als u NSURL wilt in plaats van NSString , verwijdert u de aanroep van absoluteString .

2
toegevoegd
Ah, correct. Het is gestandaardiseerdURL . Vast antwoord. Bedankt voor het wijzen.
toegevoegd de auteur Krizz, de bron