Objective c 目标c中的逃逸百分比
我知道%%方法,但它不起作用:( 使用NSLog NSLog(@"%%5B hello %%5D"); NSLog(@“%5B hello%%5D”); 印刷品 %5B你好%5D 但是使用NSString NSString *str = [NSString stringWithFormat:@"%%5B %@ %%5D",@"hello"]; NSLog(str); NSString*str=[NSString stringWithFormat:@“%%5B%@%%5D”,@“你好”]; NSLog(str); 印刷品 5你好68233204Objective c 目标c中的逃逸百分比,objective-c,escaping,Objective C,Escaping,我知道%%方法,但它不起作用:( 使用NSLog NSLog(@"%%5B hello %%5D"); NSLog(@“%5B hello%%5D”); 印刷品 %5B你好%5D 但是使用NSString NSString *str = [NSString stringWithFormat:@"%%5B %@ %%5D",@"hello"]; NSLog(str); NSString*str=[NSString stringWithFormat:@“%%5B%@%%5D”,@“你好”]; NSL
为什么?您确实需要使用
stringWithFormat:
如果您不想传入任何参数,您应该可以使用
NSString *str = @"%%5B%%5D";
但至于“为什么”,你正在经历的事情正在发生,我不确定……试着传递一个参数,看看它是否仍然发生。当没有传递参数时,可能有一个bug
根据《华盛顿邮报》的说法,你是正确地逃脱了它
表示您也做对了。您确实需要使用
stringWithFormat:
如果您不打算传入任何参数,您应该能够使用
NSString *str = @"%%5B%%5D";
但至于“为什么”,你正在经历的事情正在发生,我不确定……试着传递一个参数,看看它是否仍然发生。当没有传递参数时,可能有一个bug
根据《华盛顿邮报》的说法,你是正确地逃脱了它
这是因为你遗漏了一行代码。在你的
stringWithFormat:
版本中,你可能有类似
NSString *str = [NSString stringWithFormat:@"%%5B5%%5D"];
NSLog(str);
问题是您现在对字符串中的格式字符进行了双重解释。请记住,NSLog()
和+[NSString stringWithFormat://code>的第一个参数是格式字符串,其中%
字符被特殊处理。在这两种情况下,您都可以轻松保留字符串的原始版本(并提前去掉重复的%)使用实际的格式字符串,如
NSLog(@"%@", @"%5B%5D");
这是因为您遗漏了一行代码
NSString *str = [NSString stringWithFormat:@"%%5B5%%5D"];
NSLog(str);
问题是您现在对字符串中的格式字符进行了双重解释。请记住,NSLog()
和+[NSString stringWithFormat://code>的第一个参数是格式字符串,其中%
字符被特殊处理。在这两种情况下,您都可以轻松保留字符串的原始版本(并提前去掉重复的%)使用实际的格式字符串,如
NSLog(@"%@", @"%5B%5D");
谢谢你的回答:),但我想传递一个参数。我更新了我的示例。谢谢你的回答:),但我想传递一个参数。我更新了我的示例。注意:通过NSLog(NSLog(str);
)调用应该始终使用格式规范:NSLog(@“%@”,str);
注意:通过NSLog(NSLog(str)调用;
)应始终使用格式规范:NSLog(@“%@”,str);