iphone - 来自 "stringWithFormat:"的意外结果

标签 iphone objective-c ios nsstring

以下 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/

相关文章:

iphone - SDK 3.0的可用音频编解码器

iOS Sprite Kit 通过元素移动进行碰撞

iphone - 如何在 UIWebview 中启用水平滚动并禁用垂直滚动?

jquery - UI 滚动像 iPhone HTML 5

ios - 将数据从 UITableViewCell 推送到 ViewController

objective-c - Objective-C 中的选择器只是向对象发送消息的另一种方式吗?

objective-c - 寻找合适的词汇数据库来构建C结构

ios - 将核心数据应用程序迁移到 iCloud

objective-c - GameKit:谁是大师?

ios - 合并具有不同分辨率的剪辑