Получить части NSURL в objective-c
у меня есть NSString со значением
http://digg.com/news/business/24hr
Как я могу получить все до 3-го уровня?
http://digg.com/news/
2 ответа:
это не совсем третий уровень, заметь. URL-адрес разделяется следующим образом:
- протокол или схему (здесь
http
)- the
://
разделитель- имя пользователя и пароль (здесь нет, но это может быть
username:password@hostname
)- имя хоста (здесь
digg.com
)- порт (это было бы
:80
после доменного имени например)- путь (здесь
/news/business/24hr
)- в строка параметров (все, что следует за точкой с запятой)
- строка запроса (это было бы, если бы вы получили такие параметры, как
?foo=bar&baz=frob
)- фрагмент (это было бы, если бы у вас был якорь в ссылке, например
#foobar
)."полнофункциональный" URL-адрес будет выглядеть так:
http://foobar:nicate@example.com:8080/some/path/file.html;params-here?foo=bar#baz
NSURL
имеет широкий диапазон методов доступа. Вы можете проверить их в документации дляNSURL
класс, раздел доступ к Части URL. Для быстрого ознакомления:
-[NSURL scheme]
= http-[NSURL resourceSpecifier]
= (все от / / до конца URL)-[NSURL user]
= foobar-[NSURL password]
= более, общаться-[NSURL host]
= example.com-[NSURL port]
= 8080-[NSURL path]
= / some / path / file.HTML-код-[NSURL pathComponents]
= @["/", "некоторые", "путь", "файл.html"] (обратите внимание, что начальная / является частью это)-[NSURL lastPathComponent]
= файл.HTML-код-[NSURL pathExtension]
= html-[NSURL parameterString]
= params-здесь-[NSURL query]
= foo=bar-[NSURL fragment]
= Базомчто вы хотите, хотя, что-то вроде этого:
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. Другие черты отбрасываются.)