我想格式化一条消息,比如“1.0 KiB的数据传输耗时1:32小时”。但我需要字节计数和持续时间的格式化和本地化。我发现了几个如何格式化字节计数的想法,持续时间似乎很好。但接下来是本地化,我自己编写的代码变得过多。我正在寻找任何想法,如何在ICU库的帮助下实现这种格式化。
发布于 2013-03-09 13:55:57
您可以简单地使用Java MessageFormat
,它允许您将不同的java类型格式化为字符串;这种格式应该可以满足您的需要。
final MessageFormat format = new MessageFormat("Data transfer of {0,number,0.0} KiB took {1}:{2} hours");
用法为
final String formatted = format.format(new Object[]{amountTransferred, hours, minutes});
其中,amountTransferred
是double
、float
或BigDecimal
,hours
和minutes
是整数类型。
如果需要单独格式化分钟数到HH:mm
,已经有一个关于如何格式化分钟数的post。
发布于 2013-09-05 23:54:13
ICU现在有紧凑的小数单位(1.0 MiB)和持续时间格式。这是一个很好的问题,我不认为msgformat本身就支持这一点。
您可以像Boris的响应中那样,只使用不带KiB的模式{0,number}
,然后调用format.setFormat(0,...)
将数字格式化程序替换为CompactDecimalFormat或单位格式化程序。
https://stackoverflow.com/questions/15311431
复制相似问题