在NSString中填充一个数字

我有一个int,例如说45.我想从这个int填充4个零来得到NSString。 所以结果是: @"0045" 。 类似的,如果int是9,我想得到: @"0009"

我知道我可以计算数字的位数,然后从我想要填充的零个数中减去它,并将该数字预先加入到字符串中,但有没有更优雅的方法? 谢谢。


尝试这个:

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正确填充数字的评论。


不好意思用已经接受的答案回答这个问题,但答案(在更新中) 不是最好的解决方案。

如果你想拥有一个任意数字,你不必为你的格式创建格式,因为IEEE printf支持这个格式。 相反:

NSString *paddedNumber = [NSString stringWithFormat:@"%0*d", 4, 45];
NSString *otherPaddedNumber = [NSString stringWithFormat:@"%0*d", 4, 9];

另一种解决方案起作用时,效率较低,优雅。

从IEEE printf规范:

字段宽度或精度或两者都可以用星号('*')表示。 在这种情况下,类型为int的参数提供字段宽度或精度。


作为Int扩展的Swift版本(可能想为该方法提供一个更好的名称):

extension Int
{
    func zeroPaddedStringValueForFieldWidth(fieldWidth: Int) -> String
    {
        return String(format: "%0*d", fieldWidth, self)
    }
}

例子:

print( 45.zeroPaddedStringValueForFieldWidth(4) ) // prints "0045"
print( 9.zeroPaddedStringValueForFieldWidth(4) ) // prints "0009"
链接地址: http://www.djcxy.com/p/85225.html

上一篇: Padding a number in NSString

下一篇: Number of occurrences of a substring in an NSString?