2012-01-18 44 views
19

嘿,我正在寻找一种方法来从另一个字符串中提取字符串。它可以是任何长度,可以在字符串的任何部分,所以通常的方法不起作用。IOS:NSString从字符串中检索子字符串

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

我想提取从ID =%至下一%。

任何想法的?

+1

[http://stackoverflow.com/questions/8484826/retrieving-particular-lines-of-text-from-string-memory-management-issues][1] [1] :http://stackoverflow.com/questions/8484826/retrieving-particular-lines-of-text-from-string-memory-management-issues 这是我的问题..关注它 – Shubhank 2012-01-18 15:00:44

+0

检查此链接。其简单而实用。 http://stackoverflow.com/a/5806879/1635315 – iKT 2014-01-08 06:28:19

回答

71

使用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:方法来得到你想要的比特串。这里有一个解决您的具体问题:

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,如果你需要做的这几次可能更为有用提取查询参数的通用解决方案:

- (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:@""]; 

UPDATE:于iOS 8+那里有一个内置的类名为NSURLComponents,可以自动分析查询参数为你(NSURLComponents可在iOS 7+,但查询参数解析功能ISN “T)。

+0

URLQueryParameters函数完美工作!谢谢 – youssman 2014-08-27 12:10:52

3

尝试此

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

NSString * day = [foo objectAtIndex:0];