Как получить значения из NSString

У меня есть NSString. Это URL-адрес, который я получаю при использовании универсальных ссылок. Я хочу получить от него значение id. Существуют ли какие-либо прямые методы в SDK или нам нужно использовать componententsSeparated строковые значения?

Ниже приведен NSString/URL:

https://some.com/cc/test.html?id=3039#value=test

Я хочу получить две вещи: «тест» из test.html и значение «id».


person kiri    schedule 13.07.2017    source источник


Ответы (3)


Используйте NSURLComponents, созданный из NSURL или NSString вашего URL.

Оттуда вы можете использовать path, чтобы получить часть /cc/test.html. Затем используйте lastPathComponent, чтобы получить test.html, и, наконец, используйте stringByDeletingPathExtension, чтобы получить test.

Чтобы получить значение «id», начните со значения queryItems компонентов. Переберите этот массив, найдя NSURLQueryItem с именем «id», а затем получите его значение.

person rmaddy    schedule 13.07.2017

Вы можете создать NSURLComponents из параметров получения строки URL, вызвав метод queryItems. Он вернет массив NSURLQueryItem

NSURLComponents *components = [NSURLComponents componentsWithString:@"https://some.com/cc/test.html?id=3039&value=test"];
    NSArray *array = [components queryItems];
    for(NSURLQueryItem *item in array){
        NSLog(@"Name: %@, Value: %@", item.name, item.value);
    }
    NSLog(@"Items: %@", array);
person Lal Krishna    schedule 13.07.2017

Мы можем сделать расширение

  extension URL {              
      func getParamValue(paramaterName: String) -> String? {
          guard let url = URLComponents(string:self.absoluteString ) else { return nil }
             return url.queryItems?.first(where: { $0.name == paramaterName})?.value
      }
  }

Теперь вы можете позвонить, как показано ниже

let someURL = URL(string: "https://some.com/cc/test.html?id=3039&value=test")!
someURL.getParamValue("id") // 3039
someURL.getParamValue("value") // test
person Dharma    schedule 13.07.2017