Tôi có một NSString với giá trị củaNhận bộ phận của một NSURL trong Objective-C
http://digg.com/news/business/24hr
Làm thế nào tôi có thể nhận được tất cả mọi thứ trước khi mức độ thứ 3?
http://digg.com/news/
Tôi có một NSString với giá trị củaNhận bộ phận của một NSURL trong Objective-C
http://digg.com/news/business/24hr
Làm thế nào tôi có thể nhận được tất cả mọi thứ trước khi mức độ thứ 3?
http://digg.com/news/
Đây không phải là cấp độ thứ ba, nhớ bạn. Một URL được chia như vậy:
http
)://
delimiterusername:[email protected]
)digg.com
):80
sau tên miền ví dụ)/news/business/24hr
)?foo=bar&baz=frob
)#foobar
).A "đầy đủ tính năng" URL sẽ trông như thế này:
http://foobar:[email protected]:8080/some/path/file.html;params-here?foo=bar#baz
NSURL
có một loạt các bộ truy xuất. Bạn có thể kiểm tra chúng trong tài liệu cho lớp NSURL
, phần Truy cập các phần của URL. Để tham khảo nhanh:
-[NSURL scheme]
= http-[NSURL resourceSpecifier]
= (tất cả mọi thứ từ // vào cuối URL)-[NSURL user]
= foobar-[NSURL password]
= nicate-[NSURL host]
= example.com-[NSURL port]
= 8080-[NSURL path]
=/some/pat h/file.html-[NSURL pathComponents]
= @ [ "/", "một số", "con đường", "file.html"] (lưu ý ban đầu/là một phần của nó)-[NSURL lastPathComponent]
= file.html-[NSURL pathExtension]
= html-[NSURL parameterString]
= params-đây-[NSURL query]
= foo = bar-[NSURL fragment]
= bazNhững gì bạn sẽ muốn, tuy nhiê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, hos t và thành phần đường dẫn đầu tiên. (Các phần tử ở chỉ số 0 trong mảng trả về bởi -[NSString pathComponents]
chỉ đơn giản là "/", vì vậy bạn sẽ muốn phần tử tại chỉ số 1. slashes khác sẽ bị loại bỏ.)
cảm ơn bạn rất nhiều – Melina
người trả lời tuyệt vời, cảm ơn! –
cho bất kỳ ai đọc điều này: bạn cần phải nhận '[url.pathComponents objectAtIndex: 1]' thay vì chỉ mục '0', vì các dấu gạch chéo thực sự là các phần tử của mảng, làm cho mã trong câu trả lời này xuất ra' http: // digg.com // ' – Dima