Java覆盖特定区域设置的区域设置

Rob*_*Rob 5 java locale

NumberFormat.getCurrencyInstance().format(amount)用来将货币从BigDecimal格式化为字符串.这正如预期的那样,问题是我们的主要目标是荷兰市场,默认的荷兰格式很奇怪.

让我解释一下,当格式化-125时,我得到荷兰语"€125-"(预计为" - 125欧元").英国按预期工作" - 125.50英镑".

我可以检查语言环境是否是荷兰语,然后每次我想格式化小数时提供一个模式.但我更喜欢一种覆盖荷兰语格式设置的解决方案.我在考虑以下内容:

Locale nlLocale = new Locale("nl", "NL");
NumberFormat.getCurrencyInstance(new Locale("nl", "NL")).setFormatPattern("€ #");
Run Code Online (Sandbox Code Playgroud)

因此,每次我在格式化时使用荷兰语语言环境时,我都会获得自定义格式.是否存在类似的解决方案?

Ste*_*n C 2

撇开该特定格式是否“正确”的问题不谈,更改“nl”区域设置的货币实例的方法是实现和配置LocaleServiceProvider数字格式服务的自定义。(提供程序类需要子类化NumberFormatProvider,但超类 javadoc 解释了如何配置提供程序。)

对于您所关心的特定情况,提供程序需要返回一个非标准NumberFormat实例,但在其他情况下(可能)委托给默认提供程序。