У меня есть NSString со значением
http://digg.com/news/business/24hr
Как я могу получить все до 3-го уровня?
http://digg.com/news/
У меня есть NSString со значением
http://digg.com/news/business/24hr
Как я могу получить все до 3-го уровня?
http://digg.com/news/
Это не совсем третий уровень, заметьте. URL-адрес разбивается следующим образом:
http)://username:[email protected])digg.com):80 после имени домена, например)/news/business/24hr)?foo=bar&baz=frob)#foobar)."Полнофункциональный" URL-адрес будет выглядеть так:
http://foobar:[email protected]:8080/some/path/file.html;params-here?foo=bar#baz
NSURL имеет широкий диапазон аксессуаров. Вы можете проверить их в документации для NSURL класс, раздел Доступ к частям URL. Для быстрой справки:
-[NSURL scheme]= http-[NSURL resourceSpecifier]= (все от//до конца 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" ] (обратите внимание, что исходный/является его частью)-[NSURL lastPathComponent]= file.html-[NSURL pathExtension]= html-[NSURL parameterString]= params-here-[NSURL query]= foo = bar-[NSURL fragment]= bazОднако вам нужно что-то подобное:
NSURL* url = [NSURL URLWithString:@"http://digg.com/news/business/24hr"];
NSString* reducedUrl = [NSString stringWithFormat:
@"%@://%@/%@",
url.scheme,
url.host,
url.pathComponents[1]];
Для вашего примерного URL то, что вам кажется нужным, это протокол, хост и первый компонент пути. (Элемент с индексом 0 в массиве, возвращаемом -[NSString pathComponents], просто "/", поэтому вам понадобится элемент с индексом 1. Другие косые черты отбрасываются.)
Игровая площадка обеспечивает интерактивный способ увидеть это в действии. Надеюсь, вы сможете наслаждаться тем же самым, интересным способом научиться NSURL важной теме в iOS.