Bur*_*000 19 string iphone nsstring ios
嘿我正在寻找一种从另一个字符串中提取字符串的方法.它可以是任何长度并且位于字符串的任何部分,因此通常的方法不起作用.
例如 http://bla.com/bla?id=%1234%&something=%888%
我要提取的是从id =%到下一个%.
有任何想法吗?
Nic*_*ood 71
使用rangeOfString方法:
NSRange range = [string rangeOfString:@"id=%"];
if (range.location != NSNotFound)
{
//range.location is start of substring
//range.length is length of substring
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以用砍了绳子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)
Run Code Online (Sandbox Code Playgroud)
或者,这是从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;
}
Run Code Online (Sandbox Code Playgroud)
这不会从值中删除%字符,但您可以使用
NSString *value = [[value substringToIndex:[value length] - 1] substringFromIndex:1];
Run Code Online (Sandbox Code Playgroud)
或者类似的东西
NSString *value = [value stringByReplacingOccurencesOfString:@"%" withString:@""];
Run Code Online (Sandbox Code Playgroud)
更新:从iOS 8+开始,调用内置类NSURLComponents可以自动为您解析查询参数(NSURLComponents在iOS 7+上可用,但查询参数解析功能不可用).
| 归档时间: |
|
| 查看次数: |
49344 次 |
| 最近记录: |