Получить части 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. Другие черты отбрасываются.)
