Câu trả lời:
Đây không phải là cấp độ thứ ba, phiền bạn. URL được chia theo cách đó:
http
)://
delimiterusername:password@hostname
)digg.com
):80
ví dụ: đó sẽ là sau tên miền)/news/business/24hr
)?foo=bar&baz=frob
)#foobar
).URL "đầy đủ tính năng" sẽ giống như sau:
http://foobar:nicate@example.com:8080/some/path/file.html;params-here?foo=bar#baz
NSURL
có nhiều loại người truy cập. Bạn có thể kiểm tra chúng trong tài liệu dành cho NSURL
lớp, phần Truy cập các phần của URL . Để tham khảo nhanh:
-[NSURL scheme]
= http-[NSURL resourceSpecifier]
= (mọi thứ từ // đến cuối 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"] (lưu ý rằng tên viết tắt / là một phần của nó)-[NSURL lastPathComponent]
= file.html-[NSURL pathExtension]
= html-[NSURL parameterString]
= params-here-[NSURL query]
= foo = thanh-[NSURL fragment]
= bazTuy nhiên, những gì bạn muốn là một cái gì đó như thế:
NSURL* url = [NSURL URLWithString:@"http://digg.com/news/business/24hr"];
NSString* reducedUrl = [NSString stringWithFormat:
@"%@://%@/%@",
url.scheme,
url.host,
url.pathComponents[1]];
Đối với URL mẫu của bạn, những gì bạn có vẻ muốn là giao thức, máy chủ lưu trữ và thành phần đường dẫn đầu tiên. (Phần tử ở chỉ mục 0 trong mảng được trả về -[NSString pathComponents]
đơn giản là "/", vì vậy bạn sẽ muốn phần tử ở chỉ mục 1. Các dấu gạch chéo khác bị loại bỏ.)
file.html
không được liệt kê trong các dấu đầu dòng - tôi thấy chúng ta đang nhảy từ đường dẫn đến chuỗi truy vấn ...
[url.pathComponents objectAtIndex:1]
thay vì chỉ số0
, bởi vì các dấu gạch chéo là thực sự yếu tố của mảng, gây ra các mã trong câu trả lời này đến đầu rahttp://digg.com//