Antworten:
Dies ist nicht gerade die dritte Ebene, wohlgemerkt. Eine URL wird folgendermaßen aufgeteilt:
http)://Trennzeichenusername:password@hostname)digg.com):80nach 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
NSURLhat eine breite Palette von Accessoren. Sie können sie in der Dokumentation für die NSURLKlasse 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.htmlist 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//