如何从 NSString 获取值

How to get Values from a NSString

我有一个NSString。这是我在使用通用链接时得到的 URL。我想从中获取 id 值。 SDK中有直接方法还是需要使用componententsSeparated字符串值?

下面是NSString/URL:

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

我想得到两个东西:"test" 来自 test.html 和 "id" 值。

使用从 URL 的 NSURLNSString 创建的 NSURLComponents

从那里您可以使用 path 获取 /cc/test.html 部分。然后用lastPathComponent得到test.html最后用stringByDeletingPathExtension得到test.

要获得 "id" 值,请从组件的 queryItems 值开始。迭代该数组找到名称为 "id" 的 NSURLQueryItem,然后获取其值。

您可以通过调用 queryItems 方法从 URL 字符串获取参数创建 NSURLComponents。它将 return 数组 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);

我们可以延期

  extension URL {              
      func getParamValue(paramaterName: String) -> String? {
          guard let url = URLComponents(string:self.absoluteString ) else { return nil }
             return url.queryItems?.first(where: { [=10=].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