Risposte:
Questo non è esattamente il terzo livello, intendiamoci. Un URL è suddiviso in questo modo:
http
)://
delimitatoreusername:password@hostname
)digg.com
):80
ad esempio dopo il nome del dominio)/news/business/24hr
)?foo=bar&baz=frob
)#foobar
).Un URL "con funzionalità complete" sarebbe simile al seguente:
http://foobar:nicate@example.com:8080/some/path/file.html;params-here?foo=bar#baz
NSURL
ha una vasta gamma di accessori. Puoi controllarli nella documentazione per la NSURL
classe, sezione Accesso alle parti dell'URL . Per una rapida consultazione:
-[NSURL scheme]
= http-[NSURL resourceSpecifier]
= (tutto da // alla fine dell'URL)-[NSURL user]
= foobar-[NSURL password]
= nicato-[NSURL host]
= esempio.com-[NSURL port]
= 8080-[NSURL path]
= /some/path/file.html-[NSURL pathComponents]
= @ ["/", "some", "path", "file.html"] (nota che l'iniziale / ne fa parte)-[NSURL lastPathComponent]
= file.html-[NSURL pathExtension]
= html-[NSURL parameterString]
= params-qui-[NSURL query]
= foo = bar-[NSURL fragment]
= bazQuello che vorrai, però, è qualcosa del genere:
NSURL* url = [NSURL URLWithString:@"http://digg.com/news/business/24hr"];
NSString* reducedUrl = [NSString stringWithFormat:
@"%@://%@/%@",
url.scheme,
url.host,
url.pathComponents[1]];
Per il tuo URL di esempio, ciò che sembri desiderare è il protocollo, l'host e il primo componente del percorso. (L'elemento all'indice 0 nell'array restituito da -[NSString pathComponents]
è semplicemente "/", quindi ti consigliamo l'elemento all'indice 1. Le altre barre vengono scartate.)
file.html
non è elencato nei punti elenco: vedo che stiamo saltando dal percorso alla stringa di query ...
[url.pathComponents objectAtIndex:1]
invece di index0
, perché le barre sono in realtà elementi dell'array, causando l'output del codice in questa rispostahttp://digg.com//