操纵URL - 最好的方法

时间:2011-03-25 07:24:45

标签: iphone cocoa-touch nsurl

我有一张图片网址,我需要从中获取图片。

但是在点击URL之前我需要操纵它。例如:

网址: - http://www.myimages.com/XYZ?wid=50&hei=55&fmt=jpeg&qlt=95&op_sharpen=0&resMode=bicub

我从服务器收到此URL。我怎样才能最好地使用这些参数,用更新的值追加它们,然后转到新建的URL?

3 个答案:

答案 0 :(得分:2)

如果您需要替换get参数,可以将该URL字符串存储到可变字符串中,然后使用&yourvar=查找?yourvar=rangeOfString模式,然后确定变量值结束并替换该值。

或者,我可能会将其拆分使用 comps = [URLstring componentsSeparatedByString:@"?"], 然后getParams = [NSMutableArray arrayWithArray:[[comps objectAtIndex:1] componentsSeparatedByString:@"&"]] 最后迭代getParams和var = [NSMutableArray arrayWithArray:[[getParams objectAtIndex:counter] componentsSeparatedByString:@"="]]

第一步在URI和GET参数之间进行分割。第二步拆分GET参数。第三步使您可以访问每个参数名称及其值。如果它们与您的搜索匹配,您可以在此步骤修改要修改的变量。

在结束每个处理步骤时,您必须使用[var componentsJoinedByString:@"&"]为每个处理步骤保存结果。

答案 1 :(得分:0)

如果您的网址已修复,那么您可以轻松提问。

NSString * string = [NSString stringWithFormat:...]; 方法会有所帮助。但在我看来,你的网址也没有修复。这就是你发布问题的原因。

您可以尝试获取“=”和“&”的索引字符。然后,您可以使用NSString类对象方法来获取可以替换的子字符串,这些子字符串将再次为字符串。

或者你可以将字符串转换为const char *然后尝试操作它。

答案 2 :(得分:0)

如果你使用的是iOS7,你可以使用NSURLComponents,看看这个例子:

NSString *urlString = @"https://mail.google.com/mail/u/0";
NSURLComponents *components = [[NSURLComponents alloc] initWithString:urlString];
[components setQuery:@"shva=1"];

其他例子:

//Example One
NSString *urlString = @"https://mail.google.com/mail/u/0/?shva=1#inbox";
NSURLComponents *components = [[NSURLComponents alloc] initWithString:urlString];

NSLog(@"%@ - %@ - %@ - %@", components.scheme, components.host, components.query, components.fragment);

//Example Two
NSString *urlString = @"https://mail.google.com/mail/u/0/?shva=1#inbox";
NSURLComponents *components = [[NSURLComponents alloc] initWithString:urlString];

if (components) {
    //good URL
} else {
    //bad URL
}

//Example three
NSURLComponents *components = [NSURLComponents new];
[components setScheme:@"https"];
[components setHost:@"mail.google.com"];
[components setQuery:@"shva=1"];
[components setFragment:@"inbox"];
[components setPath:@"/mail/u/0/"];

[self.webview loadRequest:[[NSURLRequest alloc] initWithURL:[components URL]]];

但是使用NSURLComponents你可以做其他事情,检查NSURLComponents的公共界面,官方文档还没有在线提供。