Run*_*ezz 22 cocoa cocoa-touch objective-c nsstring
我有一个int,例如说45.我想从这个int填充4个零的NSString.结果将是:@"0045".类似的,如果int是9,我想得到:@"0009".
我知道我可以计算数字的位数,然后从我想要填充的多少个零中减去它,并将该数字添加到字符串中,但是有更优雅的方式吗?谢谢.
Eim*_*tas 36
试试这个:
NSLog(@"%04d", 45);
NSLog(@"%04d", 9);
如果它工作,那么你可以得到填充号码
NSString *paddedNumber = [NSString stringWithFormat:@"%04d", 45];
NSString *otherPaddedNumber = [NSString stringWithFormat:@"%04d", 9];
更新
如果您想拥有任意数字,则必须为您的格式创建格式:
// create "%04d" format string
NSString *paddingFormat = [NSString stringWithFormat:@"%%0%dd", 4];
// use it for padding numbers
NSString *paddedNumber = [NSString stringWithFormat:paddingFormat, 45];
NSString *otherPaddedNumber = [NSString stringWithFormat:paddingFormat, 9];
更新2
请参阅@ Ibmurai关于如何使用NSLog正确填充数字的评论.
Ibm*_*rai 20
请原谅我用已经接受的答案回答这个问题,但答案(在更新中)并不是最好的解决方案.
如果您想拥有任意数字,则无需为您的格式创建格式,因为IEEE printf支持此格式.相反:
NSString *paddedNumber = [NSString stringWithFormat:@"%0*d", 4, 45];
NSString *otherPaddedNumber = [NSString stringWithFormat:@"%0*d", 4, 9];
虽然另一种解决方案有效,但它不那么有效和优雅.
来自IEEE printf规范:
字段宽度或精度或两者可以用星号('*')表示.在这种情况下,int类型的参数提供字段宽度或精度.