Ответ 1
Это не совсем третий уровень, заметьте. URL-адрес разбивается следующим образом:
- протокол или схема (здесь
http
) - разделитель
://
- имя пользователя и пароль (здесь их нет, но это может быть
username:[email protected]
) - имя хоста (здесь
digg.com
) - порт (который будет
:80
после имени домена, например) - путь (здесь
/news/business/24hr
) - строка параметров (все, что следует за точкой с запятой)
- строка запроса (это было бы, если бы у вас были параметры GET, такие как
?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. Другие косые черты отбрасываются.)