嘿,我正在寻找一种方法来从另一个字符串中提取字符串。它可以是任何长度,可以在字符串的任何部分,所以通常的方法不起作用。IOS:NSString从字符串中检索子字符串
例如 http://bla.com/bla?id=%1234%&something=%888%
我想提取从ID =%至下一%。
任何想法的?
嘿,我正在寻找一种方法来从另一个字符串中提取字符串。它可以是任何长度,可以在字符串的任何部分,所以通常的方法不起作用。IOS:NSString从字符串中检索子字符串
例如 http://bla.com/bla?id=%1234%&something=%888%
我想提取从ID =%至下一%。
任何想法的?
使用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)。
URLQueryParameters函数完美工作!谢谢 – youssman 2014-08-27 12:10:52
尝试此
的NSArray *富= [@ “10/04/2011” componentsSeparatedByString:@ “/”];
NSString * day = [foo objectAtIndex:0];
[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
检查此链接。其简单而实用。 http://stackoverflow.com/a/5806879/1635315 – iKT 2014-01-08 06:28:19