Iphone IOS:NSString从字符串中检索子字符串
嘿,我正在寻找一种从另一个字符串中提取字符串的方法。它可以是任意长度,也可以位于字符串的任意部分,因此通常的方法不起作用 比如说 我要提取的是从id=%1到下一个%Iphone IOS:NSString从字符串中检索子字符串,iphone,ios,string,nsstring,Iphone,Ios,String,Nsstring,嘿,我正在寻找一种从另一个字符串中提取字符串的方法。它可以是任意长度,也可以位于字符串的任意部分,因此通常的方法不起作用 比如说 我要提取的是从id=%1到下一个% 有什么想法吗?使用rangeOfString方法: NSRange range = [string rangeOfString:@"id=%"]; if (range.location != NSNotFound) { //range.location is start of substring //range.len
有什么想法吗?使用rangeOfString方法:
NSRange range = [string rangeOfString:@"id=%"];
if (range.location != NSNotFound)
{
//range.location is start of substring
//range.length is length of substring
}
然后可以使用substringWithRange:
、substringfromfindex:
和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:@""];
更新:从iOS 8+开始,有一个名为
NSURLComponents
的内置类,可以为您自动解析查询参数(NSURLComponents
在iOS 7+上可用,但查询参数解析功能不可用)。试试这个
NSArray*foo=[@“10/04/2011”由字符串分隔的组件:@”/“]
NSString*day=[foo objectAtIndex:0]
[[1]:这是我的问题..点击这个链接。它简单而有用。