Objective-C的“stringWithFormat:”方法怎么了?

时间:2013-05-02 06:24:37

标签: objective-c cocoa

当我定义

NSString *testString = [NSString stringWithFormat:@"%4d", 543210];

然后testString@"543210",而不是@"3210"

这曾经用于 Xcode v4.3.1 ,但现在我已升级到 v4.6 并停止工作。

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

  

然后testString是@"543210",而不是@"3210"

无论如何,这是正确的行为。 %Nd格式说明符不限制带有格式化数字的字段 - 如果字段大于表示数字所需的字符数,它只会用空格填充它。如果你之前有3210,那就错了。

如果您想格式化一个数字,最多打印最后四位数字,那么您可以这样做:

NSString *numStr = [NSString stringWithFormat:@"%d", 543210]; // or whatever
if (numStr.length > 4) {
    numStr = [numStr substringFromIndex:numStr.length - 4];
}

答案 1 :(得分:1)

另一种选择,有短缺的好处:

NSString *testString = [NSString stringWithFormat:@"%4d", 543210 % 10000];

模数运算符%返回余数,所以如果你% 10000得到4个最低有效数字。