当我定义

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


那么testString@"543210",而不是@"3210"

这曾经在Xcode v4.3.1中起作用,但是现在我升级到了v4.6,并且停止了工作。

有任何想法吗?

最佳答案

那么testString是@"543210",而不是@"3210"


无论如何,这是正确的行为。 %Nd格式说明符不限制要格式化的数字的字段-仅当具有的字段大于表示该数字所需的字符数时,才用空格填充该字段。如果您以前得到3210,那是错误的。

如果要格式化数字,以便最多打印最后四位数字,则可以执行以下操作:

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

关于objective-c - Objective-C的“stringWithFormat:”方法发生了什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16331663/

10-09 06:29