IOS:NSString从string中检索一个子string

嘿,我正在寻找一种方法来从另一个string中提取string。 它可以是任何长度,并在string的任何部分,所以通常的方法不起作用。

例如http://bla.com/bla?id=%1234%&something=%888%

我想提取的是从id =%到下一个%。

有任何想法吗?

使用rangeOfString方法:

NSRange range = [string rangeOfString:@"id=%"]; if (range.location != NSNotFound) { //range.location is start of substring //range.length is length of substring } 

然后,您可以使用substringWithRange:substringFromIndex:substringToIndex:方法来substringToIndex:以获取所需的位。 以下是针对您的特定问题的解决scheme:

 NSString *param = nil; NSRange start = [string rangeOfString:@"id=%"]; if (start.location != NSNotFound) { param = [string substringFromIndex:start.location + start.length]; NSRange end = [param rangeOfString:@"%"]; if (end.location != NSNotFound) { param = [param substringToIndex:end.location]; } } //param now contains your value (or nil if not found) 

或者,下面是从URL中提取查询参数的一般解决scheme,如果您需要这样做几次,这可能会更有用:

 - (NSDictionary *)URLQueryParameters:(NSURL *)URL { NSString *queryString = [URL query]; NSMutableDictionary *result = [NSMutableDictionary dictionary]; NSArray *parameters = [queryString componentsSeparatedByString:@"&"]; for (NSString *parameter in parameters) { NSArray *parts = [parameter componentsSeparatedByString:@"="]; if ([parts count] > 1) { NSString *key = [parts[0] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSString *value = [parts[1] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; result[key] = value; } } return result; } 

这不会去除这些值中的%字符,但是你可以用

 NSString *value = [[value substringToIndex:[value length] - 1] substringFromIndex:1]; 

或者用类似的东西

 NSString *value = [value stringByReplacingOccurencesOfString:@"%" withString:@""]; 

更新:自iOS 8 + theres一个名为NSURLComponents的内置类,可以自动分析查询参数( NSURLComponents是可用的iOS 7 +,但查询参数parsingfunction是不是)。

尝试这个

NSArray * foo = [@“10/04/2011”componentsSeparatedByString:@“/”];

NSString * day = [foo objectAtIndex:0];