Jawaban:
Ini bukan tingkat ketiga, ingatlah. Sebuah URL dibagi seperti itu:
http
)://
pembatasusername:password@hostname
)digg.com
):80
setelah nama domain)/news/business/24hr
)?foo=bar&baz=frob
)#foobar
).URL "berfitur lengkap" akan terlihat seperti ini:
http://foobar:nicate@example.com:8080/some/path/file.html;params-here?foo=bar#baz
NSURL
memiliki berbagai macam pengakses. Anda dapat memeriksanya di dokumentasi untuk NSURL
kelas, bagian Mengakses Bagian dari URL . Untuk referensi cepat:
-[NSURL scheme]
= http-[NSURL resourceSpecifier]
= (semuanya dari // sampai akhir 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"] (perhatikan bahwa inisial / adalah bagian darinya)-[NSURL lastPathComponent]
= file.html-[NSURL pathExtension]
= html-[NSURL parameterString]
= params-here-[NSURL query]
= foo = bar-[NSURL fragment]
= bazNamun, yang Anda inginkan adalah sesuatu seperti itu:
NSURL* url = [NSURL URLWithString:@"http://digg.com/news/business/24hr"];
NSString* reducedUrl = [NSString stringWithFormat:
@"%@://%@/%@",
url.scheme,
url.host,
url.pathComponents[1]];
Untuk URL contoh Anda, yang tampaknya Anda inginkan adalah protokol, host, dan komponen jalur pertama. (Elemen di indeks 0 dalam larik yang dikembalikan oleh -[NSString pathComponents]
hanyalah "/", jadi Anda akan menginginkan elemen di indeks 1. Garis miring lainnya dibuang.)
file.html
tidak terdaftar dalam poin-poin - saya melihat kita melompat dari jalur ke string kueri ...
[url.pathComponents objectAtIndex:1]
alih-alih indeks0
, karena garis miring sebenarnya adalah elemen dari array, menyebabkan kode dalam jawaban ini menjadi keluaranhttp://digg.com//