一个hash/pound(#)在格式化字符串中代表什么?

7

我有一些代码可以格式化文件大小字符串:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
[numberFormatter setPositiveFormat: @"#,##0.## bytes"];
@"#,##0.## bytes" 是与 stringWithFormat 使用相同类型的格式字符串吗?这里的井号/加号符号是什么意思?
4个回答

14

# 通常会被数字替换,如果有一个数字存在,否则什么都不会替换。 0 将被数字替换,如果存在一个数字,否则将被替换为零。

所以对于以下格式“##00.00##”,你会得到以下输出:

1 => 01.00
12.1 => 12.10
1234.5 => 1234.50
1.2345 => 01.2345

很好,谢谢你提供的例子,它们为我解决了疑惑。 - nevan king

4
它们被称为占位符。
引用: 占位符 您使用井号字符(#)来表示将由用户输入的数字字符。例如,对于正数模式“ $#,## 0.00”,如果将字符“76329”输入应用了该模式的单元格中,则会将其显示为$76,329.00。严格来说,不过您不需要使用占位符。格式字符串“,0.00”,“#,#0.00”和“#,## 0.00”在功能上是等效的。换句话说,在模式字符串中包括分隔符字符会向NSNumberFormatter发出使用这些分隔符的信号,而不管您是否使用(或在哪里放置)占位符。占位符字符的主要优点在于它能够使模式字符串更易读,这对于在用户界面中显示模式尤其有用。
来源:http://developer.apple.com/documentation/InternetWeb/Reference/WO542Reference/com/webobjects/foundation/NSNumberFormatter.html

3

'#'代表一个可选的数字位,如果该位置上是0,则不会出现在结果中,而0则表示该数字位始终会出现。

我们以345.5为例:

#,##0.## = 345.5
0,000.00 = 0,345.50

2
'#'在大多数编程语言中被用作可选数字,而'0'则是必需的数字(用于获取前导/尾随零)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接