2012-01-18 31 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

+0

このリンクを確認してください。そのシンプルで便利な。 http://stackoverflow.com/a/5806879/1635315 – iKT

答えて

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:theresの 8+のiOSのとおりビルトインクラス自動的NSURLComponentsが7+ iOS版で提供されています(あなたのためのクエリパラメータを解析することができますNSURLComponentsと呼ばれますが、クエリパラメータは、機能ISNを解析't)。

+0

URLQueryParameters関数は完全に機能します!どうも – youssman

3

この

NSArrayのを試してみてください* FOO = [ "2011年10月4日" componentsSeparatedByString @:@ "/"];

NSString * day = [foo objectAtIndex:0];

関連する問題