Захватывает все за домен в NSURL? - PullRequest
1 голос
/ 24 февраля 2012

Это кажется простым, но я не смог найти ничего, что бы точно соответствовало тому, что я ищу.

Мне нужна способность взять NSURL (или его представление NSString) изахватить все, что за схему и домен.Так что в случае http://www.google.com/search?&q=cocoa, мне нужно /search?&q=cocoa.

Я могу приблизиться, комбинируя строку, используя [NSURLlativePath] и [NSURL запрос], но [запрос NSURL] пропускает вопросительные знаки, и поскольку URL-адреса, с которыми я работаю, не гарантированно содержат вопросительные знаки, я не могу просто добавить их обратно в себя.

Так что есть хороший и удобный способ получитьвсе, что за схемой и областью, которые я пропустил, или мне придется все это разделить и склеить?

Ответы [ 3 ]

3 голосов
/ 14 марта 2013

Разве это не то, что [NSURL relativeString] делает?

Один незначительный Примечание предостережения по этому вопросу:

enter image description here

1 голос
/ 24 февраля 2012

Если URL не имеет вопросительного знака для обозначения строки параметров, тогда все параметры должны быть возвращены как часть пути.Чтобы NSURL возвращал что-то из ‑query, в URL-адресе должно быть .

Другими вещами, которые могут прийти после пути, являются ‑fragment и ‑parameterString.URL в основном разбиваются следующим образом:

scheme://user:password@host.domain.org:portnumber/path/file.htm;param1;param2?something=other&andmore=more#fragments

Если ‑query возвращает nil, тогда вопросительный знак отсутствует.

1 голос
/ 24 февраля 2012

Вы можете сделать это с помощью регулярных выражений и т. Д. Но в этом случае лучше всего подойдет нестандартное решение.

Если ваш URL-адрес всегда "http: // ...", то вам нужно найти первые "/" после первых 7 символов, а затем взять строку оттуда. Или вы можете просто найти третий "/"...

Вы можете вычислить индекс этого "/", используя один из rangeX методов NSString, и использовать метод substringFromIndex, если он у вас есть.

...