如何在Java中将长整数格式化为不带分隔符的字符串?

Dan*_*nov 115 java messageformat

简单的问题,但我敢打赌,在这里询问可能比试图理解文档更直接MessageFormat:

long foo = 12345;
String s = MessageFormat.format("{0}", foo);
Run Code Online (Sandbox Code Playgroud)

观察值为"12,345".

期望值是"12345".

Dan*_*nov 315

MessageFormat.format("{0,number,#}", foo);
Run Code Online (Sandbox Code Playgroud)

  • 我真的很惊讶为什么将数字字符串作为默认值而不是格式化程序API的显式内容 (7认同)
  • 我更喜欢这种方式.因为它允许我更改语言属性文件中的格式. (3认同)
  • 谢谢,我试图通过 MessageFormat 属性注入来做到这一点。好消息是,有不止一种方法可以做到这一点! (2认同)
  • 完美解决!帮助我将格式/取消格式选项保留在参考数据中,而不是在代码级别 - 谢谢!正如@SebastianRoth 所说 - 这应该是公认的答案。 (2认同)
  • 如果引用模式,这也适用于选择格式:`MessageFormat.format("{0,choice,0#no foos|1#one foo|1<'{0,number,#}' foos}"` (2认同)

Rob*_*b H 58

只是用 Long.toString(long foo)

  • 或者`String.valueOf(long)` (12认同)
  • 也许这很微不足道,但在这种情况下,你依赖于Long.toString(foo)的无证行为.出于这个原因,我更喜欢Daniel Fortunov的回答. (6认同)
  • String.valueOf()调用Long.toString() (5认同)
  • 它没有记录.请参阅http://download.oracle.com/javase/6/docs/api/java/lang/Long.html#toString%28long%29. (4认同)
  • 好的,但是这个解决方案不适用于ResourceBundle中的消息格式化.[Tuto i18n](https://docs.oracle.com/javase/tutorial/i18n/format/messageFormat.html) (3认同)
  • 如果您正在使用资源包,那么Daniel Fortunov的答案绝对是可取的. (2认同)