J'ai un NSString avec la valeur de
http://digg.com/news/business/24hr
Comment puis-je tout obtenir avant le 3ème niveau?
http://digg.com/news/
Ce n'est pas exactement le troisième niveau, remarquez. Une URL est divisée comme suit:
http
)://
délimiteurusername:password@hostname
)digg.com
):80
après le nom de domaine par exemple)/news/business/24hr
)?foo=bar&baz=frob
)#foobar
).Une URL "complète" ressemblerait à ceci:
http://foobar:[email protected]:8080/some/path/file.html;params-here?foo=bar#baz
NSURL
dispose d'une large gamme d'accesseurs. Vous pouvez les vérifier dans la documentation de la classe NSURL
, section Accès 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]
= exemple.com-[NSURL port]
= 8080-[NSURL path]
= /some/path/file.html-[NSURL pathComponents]
= @ ["/", "un peu", "chemin", "fichier.html"] (notez que l'initiale/en fait partie)-[NSURL lastPathComponent]
= fichier.html-[NSURL pathExtension]
= html-[NSURL parameterString]
= params-here-[NSURL query]
= toto = barre-[NSURL fragment]
= bazCe 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 d'indice 0 dans le tableau retourné par -[NSString pathComponents]
est simplement "/", vous voudrez donc que l'élément soit à l'index 1. Les autres barres obliques sont supprimées.)