不带逗号的 Java 资源包格式
Posted
技术标签:
【中文标题】不带逗号的 Java 资源包格式【英文标题】:Java resource bundle formatting with out commas 【发布时间】:2013-05-07 03:32:52 【问题描述】:我有一个 web 服务实现,它验证请求并在响应中写入错误消息。响应不是所需的格式。
错误消息模板位于资源包属性文件中。
...
key=Plant name 0 Plant Id 1.
...
这是我在验证后收到的错误消息。
Plant name PLANT1 Plant Id 9,905,005.
但所需的输出是数字变量不带逗号。
Plant name WPLANT Plant Id 9905005.
这是我的代码。
private String getErrorMessage(String messageKey, Object... args)
ResourceBundle messages = ResourceBundle.getBundle("ErrorMessageResourceBundle");
MessageFormat formatter = new MessageFormat("");
formatter.applyPattern(messages.getString(messageKey));
String output = formatter.format(args);
return output;
我用下面的键和变量调用这个方法。
...
getErrorMessage(key,"PLANT1",9905005)
...
如何更改此代码以获得所需的输出?我更喜欢不包含 %s, %d 的方法,从那时起我就无法在属性文件的错误消息中更改变量的顺序。
【问题讨论】:
【参考方案1】:您可以使用子格式模式。 示例:
MessageFormat formatter = new MessageFormat("0 1,number,###0");
所以代码应该是这样的:
private String getErrorMessage(String messageKey, Object... args)
ResourceBundle messages = ResourceBundle.getBundle("ErrorMessageResourceBundle");
MessageFormat formatter = new MessageFormat("0 1,number,###0");
formatter.applyPattern(messages.getString(messageKey));
String output = formatter.format(args);
return output;
在此处阅读 Oracle 关于 SubFormatPattern 的文档: http://docs.oracle.com/javase/6/docs/api/java/text/MessageFormat.html#patterns
【讨论】:
感谢您的回答。但它仍然打印输出 with 逗号。【参考方案2】:您始终可以先将数字转换为String
。
getErrorMessage(key,"PLANT1", String.valueOf(9905005))
这应该可行。我怀疑消息格式化程序 aauto 会根据您的语言环境检测到该数字并将其格式化为一个。
【讨论】:
以上是关于不带逗号的 Java 资源包格式的主要内容,如果未能解决你的问题,请参考以下文章