NSNumberformatter 添加额外的零

Posted

技术标签:

【中文标题】NSNumberformatter 添加额外的零【英文标题】:NSNumberformatter add extra zero 【发布时间】:2012-06-21 04:23:19 【问题描述】:

我正在寻找一种将“1”显示为“01”的方法,所以基本上 10 以下的所有内容都应该有一个前导 0。

最好的方法是什么? 我知道我可以只使用一个简单的 if 结构来执行此检查,但这应该可以使用 NSNumberformatter 来实现,对吧?

【问题讨论】:

请参阅my answer,它为带有swift 标记的类似问题提供最多3 个解决方案。 【参考方案1】:

如果你只想要一个 NSString,你可以这样做:

NSString *myNumber = [NSString stringWithFormat:@"%02d", number];

%02d 来自 C。%nd 表示字符串中必须至少有 n 个字符,如果少,则用 0 填充。这是一个例子:

NSString *example = [NSString stringWithFormat:@"%010d", number];

如果number 变量只有两位长,则它会以八个零作为前缀。如果它是 9 位长,它将以单个零作为前缀。

如果你想使用 NSNumberFormatter,你可以这样做:

NSNumberFormatter * numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setPaddingPosition:NSNumberFormatterPadBeforePrefix];
[numberFormatter setPaddingCharacter:@"0"];
[numberFormatter setMinimumIntegerDigits:10];
NSNumber *number = [NSNumber numberWithInt:numberVariableHere];

----更新----- 我认为这可以解决您的问题:

[_minutes addObject:[NSNumber numberWithInt:i]];
return [NSString stringWithFormat:@"%02d", [[_minutes objectAtIndex:row] intValue]]; 

【讨论】:

谢谢,这肯定会有所帮助。但是获取 stringValue 是否有可能再次删除 0 ?我在 UIPickerView 中使用它,但也许在 titleForRow 中这样做会更好 [_minutes addObject:[NSNumber numberWithInt:i]]; return [NSString stringWithFormat:@"%02@", [_minutes objectAtIndex:row]];这似乎只是返回“1”,“2” 字符串值不会再次删除 0,因为字符串是一系列字符。例如,在字符串中,字母“a”与“0”相同。字符串只存储字符,字母和数字都是字符。 @woutr_be 查看我的更新。我想我修复了你的无效代码。 您无需致电setPaddingCharacter。把它留给NSNumberFormatter。 :)【参考方案2】:

为 Swift 3 修复

let x = 999.1243
let formatter = NumberFormatter()
formatter.minimumFractionDigits = 1 // for float
formatter.maximumFractionDigits = 1 // for float
formatter.minimumIntegerDigits = 10 // digits do want before decimal
formatter.paddingPosition = .beforePrefix
formatter.paddingCharacter = "0"

let s = formatter.string(from: NSNumber(floatLiteral: x))!

输出

“0000000999.1”

【讨论】:

谢谢!请注意,默认的 paddingCharacter 是“0”,但你是对的,设置它更安全。

以上是关于NSNumberformatter 添加额外的零的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 AngularJS $formatters 添加额外的零? (或以任何可能的方式,输入数字?)

数据类型为 FLOAT 的字段中有额外的零

NSNumberFormatter 在负值上显示括号[重复]

使用多个连接和求和函数进行查询,给出错误的总数或总和

iOS 从 NSNumberFormatter 字符串中取回值

172. 阶乘后的零