【问题标题】:Format string, integer with leading zeros格式字符串,带前导零的整数
【发布时间】:2010-06-06 17:40:42
【问题描述】:

我想将一个整数值转换为带有前导零的字符串(如果需要),这样该字符串总共有 3 个字符。例如,5 将变为 "005"10 将变为 "010"

我试过这段代码:

NSString* strName = [NSString stringWithFormat:@"img_00%d.jpg", i];

这部分有效,但如果i 的值为10,例如,结果是img_0010.jpg,而不是img_010.jpg

有没有办法做我想做的事?

【问题讨论】:

    标签: objective-c string formatting


    【解决方案1】:

    使用格式字符串"img_%03d.jpg" 获取具有三位数字和前导零的十进制数。

    【讨论】:

    • 澄清:“3”可以替换为任何数字,以使显示值中的总位数。例如,%06d 会产生类似000001 的值。
    【解决方案2】:

    为了后代:这适用于十进制数。

    NSString *nmbrStr = @"0033620340000" ;
    NSDecimalNumber *theNum = [[NSDecimalNumber decimalNumberWithString:nmbrStr]decimalNumberByAdding: [NSDecimalNumber one]] ;     
    NSString *fmtStr = [NSString stringWithFormat:@"%012.0F",[theNum doubleValue]] ;
    

    虽然这些信息很难找到,但它实际上记录在格式基础知识的第二段中。查找 % 字符。

    https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Strings/Articles/FormatStrings.html

    【讨论】:

    • 这里注意@"%012.0F"中的“12”是指总位数,所以包括小数点和右边的任何数字。
    • 添加到 bcattle 的评论中,这还包括 right 的任何内容。要显示 -012.34,您必须使用 @"%07.2f"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 2010-10-18
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 2017-12-18
    相关资源
    最近更新 更多