Ce n'est pas exactement le troisième niveau, remarquez. Une URL est divisée de cette façon:
- le protocole ou le schéma (ici,
http
)
- le
://
délimiteur
- le nom d'utilisateur et le mot de passe (ici il n'y en a pas, mais ça pourrait être
username:password@hostname
)
- le nom d'hôte (ici,
digg.com
)
- le port (qui serait
:80
après le nom de domaine par exemple)
- le chemin (ici,
/news/business/24hr
)
- la chaîne de paramètres (tout ce qui suit un point-virgule)
- la chaîne de requête (ce serait si vous aviez des paramètres GET comme
?foo=bar&baz=frob
)
- le fragment (ce serait si vous aviez une ancre dans le lien, comme
#foobar
).
Une URL "complète" ressemblerait à ceci:
http://foobar:[email protected]:8080/some/path/file.html;params-here?foo=bar#baz
NSURL
dispose d'un large éventail d'accesseurs. Vous pouvez les consulter dans la documentation de la NSURL
classe, section Accéder aux parties de l'URL . Pour référence rapide:
-[NSURL scheme]
= http
-[NSURL resourceSpecifier]
= (tout de // à la fin de l'URL)
-[NSURL user]
= foobar
-[NSURL password]
= niquer
-[NSURL host]
= example.com
-[NSURL port]
= 8080
-[NSURL path]
= /some/path/file.html
-[NSURL pathComponents]
= @ ["/", "some", "path", "file.html"] (notez que l'initiale / en fait partie)
-[NSURL lastPathComponent]
= fichier.html
-[NSURL pathExtension]
= html
-[NSURL parameterString]
= paramètres-ici
-[NSURL query]
= toto = bar
-[NSURL fragment]
= baz
Ce que vous voudrez, cependant, c'est quelque chose comme ça:
NSURL* url = [NSURL URLWithString:@"http://digg.com/news/business/24hr"];
NSString* reducedUrl = [NSString stringWithFormat:
@"%@://%@/%@",
url.scheme,
url.host,
url.pathComponents[1]];
Pour votre exemple d'URL, ce que vous semblez vouloir, c'est le protocole, l'hôte et le premier composant de chemin. (L'élément à l'index 0 dans le tableau renvoyé par -[NSString pathComponents]
est simplement "/", vous voudrez donc l'élément à l'index 1. Les autres barres obliques sont supprimées.)
[url.pathComponents objectAtIndex:1]
place de l'index0
, car les barres obliques sont en fait des éléments du tableau, ce qui entraîne la sortie du code de cette réponsehttp://digg.com//
file.html
n'est pas répertorié dans les puces - je vois que nous sautons du chemin à la chaîne de requête ...Playground offre une manière interactive de voir cela en action. J'espère que vous pourrez faire de même, une façon amusante d'apprendre NSURL, un sujet important dans iOS.
la source