Разобрать доменное имя из строки URL - PullRequest
2 голосов
/ 25 февраля 2010

Как бы я проанализировал доменное имя в Objective-C?

Например, если мое строковое значение было "http://www.google.com", я бы хотел разобрать строку" google "

Ответы [ 2 ]

7 голосов
/ 25 февраля 2010

Я думаю, что вопрос немного недействителен. Хост определяется по его FQDN (полное доменное имя), которое, в вашем примере, составляет www.google.com . Это не то же самое, что mail.google.com или www.google.info или google.com . Выделение "google" не является тривиальным и не имеет особого смысла с точки зрения URL.

Если вы хотите более или менее разумно разобрать URL, я думаю, вы можете сделать следующее:

  1. Используйте метод -host NSURL, чтобы правильно разобрать схему и путь / запрос.
  2. Используйте NSString's -componentsSeparatedByString: метод для получения массива «компонентов» доменного имени.
  3. Игнорировать последний компонент.
  4. Если остался только один компонент (или может быть достаточно, чтобы взять второй по счету компонент), все готово.
  5. Если первый компонент содержит "www", например www3 , "ftp", "mail" или что-то в этом роде, вы можете игнорировать его, если хотите. Остальные могут представлять интерес, в зависимости от ваших потребностей.
  6. Протестируйте свой алгоритм на десяти тысячах URL, чтобы почувствовать бесполезность этой задачи;)
4 голосов
/ 23 сентября 2013

В iOS 7 вы можете использовать класс NSURLComponents:

NSURLComponents *components = [[NSURLComponents alloc] initWithString:@"/1712967/razobrat-domennoe-imya-iz-stroki-url"];
NSAssert([components.host isEqualToString:@"stackoverflow.com"], nil);
...