如何从 NSString 中获取值

Posted

技术标签:

【中文标题】如何从 NSString 中获取值【英文标题】:How to get Values from a NSString 【发布时间】:2017-07-13 02:53:28 【问题描述】:

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

下面是 NSString/URL:

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

我想得到两件事:来自 test.html 的“test”和“id”值。

【问题讨论】:

【参考方案1】:

使用从您的网址的NSURLNSString 创建的NSURLComponents

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

我们可以做扩展

  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

【讨论】:

以上是关于如何从 NSString 中获取值的主要内容,如果未能解决你的问题,请参考以下文章

从 NSString 获取值

如何从 NSString 获取整数的数字?

xcode 如何从 NSURL 获取 NSString

从坐标中获取当前地名(在 nsstring 中)

nsnumber 类型的 json 值“2”无法转换为 nsstring

如何在 NSString 中获取 NSArray 对象并一一发送该对象?