Odpowiedzi:
Pamiętaj, że to nie jest dokładnie trzeci poziom. Adres URL jest podzielony w następujący sposób:
http
)://
ogranicznikusername:password@hostname
)digg.com
):80
na przykład po nazwie domeny)/news/business/24hr
)?foo=bar&baz=frob
)#foobar
).„W pełni funkcjonalny” adres URL wyglądałby następująco:
http://foobar:nicate@example.com:8080/some/path/file.html;params-here?foo=bar#baz
NSURL
posiada szeroką gamę akcesoriów. Możesz je sprawdzić w dokumentacji NSURL
klasy, w sekcji Dostęp do części adresu URL . Szybkie odniesienie:
-[NSURL scheme]
= http-[NSURL resourceSpecifier]
= (wszystko od // do końca adresu URL)-[NSURL user]
= foobar-[NSURL password]
= nicate-[NSURL host]
= example.com-[NSURL port]
= 8080-[NSURL path]
= / część/ścieżka/plik.html-[NSURL pathComponents]
= @ ["/", "trochę", "ścieżka", "plik.html"] (zwróć uwagę, że początkowy znak / jest jego częścią)-[NSURL lastPathComponent]
= plik.html-[NSURL pathExtension]
= html-[NSURL parameterString]
= parametry tutaj-[NSURL query]
= foo = bar-[NSURL fragment]
= bazJednak to, czego będziesz chciał, to coś takiego:
NSURL* url = [NSURL URLWithString:@"http://digg.com/news/business/24hr"];
NSString* reducedUrl = [NSString stringWithFormat:
@"%@://%@/%@",
url.scheme,
url.host,
url.pathComponents[1]];
W przypadku Twojego przykładowego adresu URL wydaje się, że potrzebujesz protokołu, hosta i pierwszego składnika ścieżki. (Element pod indeksem 0 w tablicy zwrócony przez -[NSString pathComponents]
to po prostu „/”, więc będziesz potrzebować elementu o indeksie 1. Pozostałe ukośniki są odrzucane.)
file.html
nie jest wymieniony w punktorach - widzę, że przeskakujemy ze ścieżki do ciągu zapytania ...
[url.pathComponents objectAtIndex:1]
zamiast indeksu0
, ponieważ ukośniki są w rzeczywistości elementami tablicy, powodując, że kod w tej odpowiedzi na wyjściehttp://digg.com//