以下Objective C代码的预期结果是什么?
int intValue = 1;
NSString *string = [NSString stringWithFormat:@"%+02d", intValue];
我认为字符串的值是“+01”,结果是“+1”。格式字符串“+01”中的某些“0”被忽略。将代码更改为:
int intValue = 1;
NSString *string = [NSString stringWithFormat:@"%02d", intValue];
string的值现在为“01”。它确实产生前导“0”。但是,如果intValue为负数,则如:
int intValue = -1;
NSString *string = [NSString stringWithFormat:@"%02d", intValue];
字符串的值变为“-1”,而不是“-01”。
我错过了什么吗?或者这是一个已知的问题?推荐的解决方法是什么? 提前谢谢。
答案 0 :(得分:8)
@Mark Byers 在评论中是正确的。指定'0'
使用'0'
填充有效数字'+/-'
。而不是'0'
使用点'.'
使用'0'
填充有效数字而不管符号。
[... stringWithFormat:@"%+.2d", 1]; // Result is @"+01"
[... stringWithFormat:@"%.2d", -1]; // Result is @"-01"
答案 1 :(得分:-1)
NSString *string = [NSString stringWithFormat:@"+0%d", intValue];
NSString *string = [NSString stringWithFormat:@"-0%d", intValue];