2012-01-18 78 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];