如何从 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】:使用从您的网址的NSURL
或NSString
创建的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 中获取值的主要内容,如果未能解决你的问题,请参考以下文章