gpt4 book ai didi

iphone - iOS : NSString retrieving a substring from a string

转载 作者:IT王子 更新时间:2023-10-29 08:07:09 24 4
gpt4 key购买 nike

嘿,我正在寻找一种从另一个字符串中提取字符串的方法。它可以是任意长度并且位于字符串的任何部分,因此通常的方法不起作用。

例如 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:@""];

更新:从 iOS 8+ 开始,有一个名为 NSURLComponents 的内置类可以自动为您解析查询参数(NSURLComponents 是在 iOS 7+ 上可用,但查询参数解析功能不可用)。

关于iphone - iOS : NSString retrieving a substring from a string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8912146/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com