以下 Objective C 代码的预期结果是什么?
int intValue = 1;
NSString *string = [NSString stringWithFormat:@"%+02d", intValue];
我以为字符串的值是“+01”,结果是“+1”。不知何故,格式字符串“+01”中的“0”被忽略了。将代码更改为:
int intValue = 1;
NSString *string = [NSString stringWithFormat:@"%02d", intValue];
字符串的值现在是“01”。它确实生成前导“0”。但是,如果 intValue 为负数,如:
int intValue = -1;
NSString *string = [NSString stringWithFormat:@"%02d", intValue];
字符串的值变为“-1”,而不是“-01”。
我错过了什么吗?或者这是一个已知问题?推荐的解决方法是什么? 提前致谢。
最佳答案
@Mark Byers 的评论是正确的。指定 '0'
将相对于符号 '+/-'
用 '0'
填充有效数字。而不是 '0'
使用点 '.'
用 '0'
填充有效数字不考虑符号.
[... stringWithFormat:@"%+.2d", 1]; // Result is @"+01"
[... stringWithFormat:@"%.2d", -1]; // Result is @"-01"
关于iphone - 来自 "stringWithFormat:"的意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7618430/