2012-01-18 11 views
19

से एक सबस्ट्रिंग पुनर्प्राप्त कर रहा है अरे, मैं किसी अन्य स्ट्रिंग से स्ट्रिंग निकालने का एक तरीका ढूंढ रहा हूं। यह किसी भी लंबाई हो सकती है और स्ट्रिंग के किसी भी भाग में हो सकती है ताकि सामान्य तरीके काम न करें।आईओएस: एनएसएसटींग एक स्ट्रिंग

उदाहरण http://bla.com/bla?id=%1234%&something=%888%

के लिए क्या मैं निकालना चाहते हैं आईडी = अगले% से% से है।

कोई विचार है?

+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: तरीकों का उपयोग कर बिट्स आप चाहते हैं पाने के लिए ऊपर काट कर सकते हैं।

- (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 *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, अगर आप इस कई बार करने की जरूरत है जो अधिक उपयोगी हो सकता से क्वेरी पैरामीटर निकालने के लिए एक सामान्य समाधान है: यहाँ अपने विशिष्ट समस्या का समाधान है इस मान से% पात्रों पट्टी नहीं है, लेकिन आप कर सकते हैं कि या तो

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

साथ या

की तरह कुछ के साथ
NSString *value = [value stringByReplacingOccurencesOfString:@"%" withString:@""]; 

अद्यतन: आईओएस के रूप में 8 theres एक अंतर्निहित वर्ग NSURLComponents कि स्वचालित रूप से आप के लिए क्वेरी पैरामीटर पार्स कर सकते हैं (NSURLComponents iOS पर 7+ उपलब्ध है कहा जाता है, लेकिन क्वेरी पैरामीटर सुविधा isn को पार्स 'टी)।

+0

URLQuery पैरामीटर फ़ंक्शन पूरी तरह से काम करते हैं! धन्यवाद – youssman

3

इस

NSArray का प्रयास करें * foo = [@ "2011/10/04" componentsSeparatedByString: @ "/"];

एनएसएसटींग * दिन = [foo objectAtIndex: 0];