utilizzare il metodo rangeOfString:
NSRange range = [string rangeOfString:@"id=%"];
if (range.location != NSNotFound)
{
//range.location is start of substring
//range.length is length of substring
}
È quindi possibile tagliare la stringa utilizzando le substringWithRange:
, substringFromIndex:
e substringToIndex:
metodi per ottenere i bit che si desidera. Ecco una soluzione al vostro problema specifico:
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)
In alternativa, ecco una soluzione generale per l'estrazione di parametri di query da un URL, che può essere più utile se avete bisogno di fare questo più volte:
- (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;
}
Questo non elimina i caratteri% dai valori, ma si può fare neppure con
NSString *value = [[value substringToIndex:[value length] - 1] substringFromIndex:1];
o con qualcosa di simile
NSString *value = [value stringByReplacingOccurencesOfString:@"%" withString:@""];
UPDATE: Come di iOS 8+ theres un built-in classe chiamata NSURLComponents
in grado di analizzare automaticamente i parametri di query per voi (NSURLComponents
è disponibile su iOS 7+, ma il parametro di query parsing caratteristica isn 't).
fonte
2012-01-18 15:02:09
[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 questa era la mia domanda .. seguirlo – Shubhank
controllare questo collegamento. è semplice e utile. http://stackoverflow.com/a/5806879/1635315 – iKT