我知道%%方法,但它不起作用:(。
使用NSLog
NSLog(@"%%5B hello %%5D");
打印
%5B hello%5D
但是使用NSString
NSString *str = [NSString stringWithFormat:@"%%5B %@ %%5D",@"hello"]; NSLog(str);
打印
5你好68233204
为什么?
答案 0 :(得分:2)
这是因为你遗漏了一行代码。在您的stringWithFormat:
版本中,您可能有类似
NSString *str = [NSString stringWithFormat:@"%%5B5%%5D"];
NSLog(str);
问题是你现在已经在字符串中加倍解释了格式字符。请记住,NSLog()
和+[NSString stringWithFormat:]
的第一个arg是格式字符串,其中%
字符是专门处理的。在这两种情况下,您都可以使用实际格式字符串轻松保留字符串的原始版本(并提前删除重复的%),如
NSLog(@"%@", @"%5B%5D");
答案 1 :(得分:1)
如果您不打算传递任何参数,则需要使用stringWithFormat:
,您应该可以使用
NSString *str = @"%%5B%%5D";
但至于“为什么”,你正在经历的事情正在发生,我不确定......尝试传递参数,看看它是否仍然存在。没有参数传递时可能存在错误?
根据this帖子,你正确地逃避它。
String format specifiers document说你也是这样做的。