Antworten:
Dies ist nicht gerade die dritte Ebene, wohlgemerkt. Eine URL wird folgendermaßen aufgeteilt:
http
)://
Trennzeichenusername:password@hostname
)digg.com
):80
nach dem Domainnamen)/news/business/24hr
)?foo=bar&baz=frob
)#foobar
).Eine "voll funktionsfähige" URL würde folgendermaßen aussehen:
http://foobar:nicate@example.com:8080/some/path/file.html;params-here?foo=bar#baz
NSURL
hat eine breite Palette von Accessoren. Sie können sie in der Dokumentation für die NSURL
Klasse im Abschnitt Zugriff auf die Teile der URL überprüfen . Zum schnellen Nachschlagen:
-[NSURL scheme]
= http-[NSURL resourceSpecifier]
= (alles von // bis zum Ende der URL)-[NSURL user]
= foobar-[NSURL password]
= nicate-[NSURL host]
= example.com-[NSURL port]
= 8080-[NSURL path]
= /some/path/file.html-[NSURL pathComponents]
= @ ["/", "some", "path", "file.html"] (beachte, dass das initiale / ein Teil davon ist)-[NSURL lastPathComponent]
= file.html-[NSURL pathExtension]
= html-[NSURL parameterString]
= params-hier-[NSURL query]
= foo = bar-[NSURL fragment]
= bazWas Sie jedoch wollen, ist so etwas:
NSURL* url = [NSURL URLWithString:@"http://digg.com/news/business/24hr"];
NSString* reducedUrl = [NSString stringWithFormat:
@"%@://%@/%@",
url.scheme,
url.host,
url.pathComponents[1]];
Für Ihre Beispiel-URL scheinen Sie das Protokoll, den Host und die erste Pfadkomponente zu wollen. (Das Element am Index 0 in dem von zurückgegebenen Array -[NSString pathComponents]
ist einfach "/", daher möchten Sie das Element am Index 1. Die anderen Schrägstriche werden verworfen.)
file.html
ist nicht in den Aufzählungspunkten aufgeführt - ich sehe, wir springen vom Pfad zur Abfragezeichenfolge ...
[url.pathComponents objectAtIndex:1]
anstelle von Index erhalten0
, da die Schrägstriche tatsächlich Elemente des Arrays sind, wodurch der Code in dieser Antwort ausgegeben wirdhttp://digg.com//