2010-11-17 72 views
0

我有一个字符串 NSString * const kAUrl = @“http://www.google/start.php?show=best&usr=(here)&pwd=x”;将字符串传递给URL。

我想通过另一个字符串 的NSString * A = @ “AA”;

上面的网址在我写在这里(在这里)在上面的网址。

我怎么能通过它?

关于。

+0

你为什么要创建一个字符串常量,然后尝试修改? – MystikSpiral 2010-11-17 13:17:00

+0

当它已经是不可变的时,我看不到NSString常量的值。 – 2010-11-17 13:26:27

回答

3

您需要使用 NSString实例方法-[stringByAddingPercentEscapesUsingEncoding:]对适合URL的字符串进行编码。

然后使用-[stringWithFormat:]放置到URL中。

例如:

-(NSURL*)showBestURLWithUser:(NSString*)user { 
{ 
    user = [user stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]; 
    static NSString* template = @"http://www.google/start.php?show=best&usr=%@&pwd=x"; 
    NSString* urlString = [NSString stringWithFormat:template, user]; 
    return [NSURL URLWithString:urlString]; 
} 
+0

我想把kAUrl当作const.NOw建议我plz。感谢 – iscavengers 2010-11-17 13:20:07

+0

是否有使用const的原因?该字符串在这种状态下是不可改变的(因为它不是一个NSMutableString)... – 2010-11-17 13:23:57

+0

据我所知,const NSString *对象将无法重新分配新的NSString,并且只会使用一个常量字符串(即@“string”)。 – 2010-11-17 13:30:28

3

使用NSString stringWithFormat:

NSString *a = @"hello"; 
NSString *kAUrl = [NSString stringWithFormat:@"http://www.google/start.php?show=best&usr=%@&pwd=x", a]; 

kAUrl现在包含的其中%@是内容。


当心虽然 - 如果a包含任何URL保留字符(即一个&等),它可能会破坏您的网址。

+0

它不会工作,因为NSString * const a; a是const ..给我error.plz建议。 – iscavengers 2010-11-17 13:11:35

+0

为什么它必须是一个常量?只是不要让它成为一个常量,你应该没问题。 – deanWombourne 2010-11-23 16:15:55

1

你将你的宣言改成这样:

NSString *kAUrl = [NSString stringWithFormat:@"http://www.google/start.php?show=best&usr=%@&pwd=x", a]; 

祝您好运!

1

的NSString * A = @ “AA”;

的NSString * kAUrl = [NSString的stringWithFormat:@ “http://www.google/start.php?show=best & USR =%@ & PWD = X”,一个];

kAUrl = [kAUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

工作完成。

+0

不会将整个字符串编码为URL吗?包括URL协议等部分? – 2010-11-17 13:27:57

+0

right.it will。我不能将字符串传递给const。 – iscavengers 2010-11-17 13:43:37

+0

你为什么需要“const”? – Bourne 2010-11-17 13:58:59