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

shr*_*ing 1 cocoa objective-c

当我定义

NSString *testString = [NSString stringWithFormat:@"%4d", 543210];
Run Code Online (Sandbox Code Playgroud)

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

这曾经在Xcode v4.3.1中工作,但现在我升级到v4.6并且它停止工作.

有任何想法吗?

小智 5

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

无论如何,这是正确的行为.该%Nd格式说明不限制字段被格式化的数字-它仅与空间垫它如果与外地比来表示数所需的字符数.如果你3210以前有,这是错误的.

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

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